开窗函数第一招式(排序聚合我要看顺序)

简介: 先看下我找的题目,ENG OMG 放心 我给安排了中文

先看下我找的题目,ENG OMG 放心 我给安排了中文

44.png

Partitioned Running Totals

Question:

The cats must be ordered first by breed and second by name. They are about to enter an elevator one by one. When all the cats of the same breed have entered they leave.


We would like to know what the running total weight of the cats is.


Return: name, breed, running total weight

Order by: breed, name

Desired output:

name breed running_total_weight
Charlie British Shorthair 4.8
Smudge British Shorthair 9.7
Tigger British Shorthair 13.5
Millie Maine Coon 5.4
Misty Maine Coon 11.1
Puss Maine Coon 16.2
Smokey Maine Coon 22.3
Ashes Persian 4.5
Felix Persian 9.5
Molly Persian 13.7
Alfie Siamese 5.5
Oscar Siamese 11.6

分区运行总数

问题:

猫必须先按品种,后按名字订购。他们正要一个接一个地走进电梯。当所有同品种的猫都进入后,它们就离开。

我们想知道猫的跑步总重量是多少。

期望的输出:

name breed running_total_weight
Charlie British Shorthair 4.8
Smudge British Shorthair 9.7
Tigger British Shorthair 13.5
Millie Maine Coon 5.4
Misty Maine Coon 11.1
Puss Maine Coon 16.2
Smokey Maine Coon 22.3
Ashes Persian 4.5
Felix Persian 9.5
Molly Persian 13.7
Alfie Siamese 5.5
Oscar Siamese 11.6

答案:

select 
  name,
  breed,
  sum(weight) over (partition by breed  order by name asc) as running_total_weight
from 
  cats 

答案完全正确哦,哈哈哈 !


丝路输出:


最近工作用的太多了,踩坑也多,所以一下就做出来了。


我首先看到根据猫的品牌进行区分,每组猫进去后就出去,然后每组猫需要正序排序。


所以按照品牌分区、猫名正序、SUM() + OVER() 就可以完成


这里最主要是利用了开窗函数中添加排序后的特性:具体 默认order的开窗函数frame值是


between UNBOUNDED PRECEDING and CURRENT ROW


译文:第一行 -》 当前行


所以每次排序后我SUM函数取得是本品牌中排名第一的猫 - 当前猫的重量和!


你学费了么?

image.png

练习题的地址“戳我”

我们还有开窗的下一期哦

目录
相关文章
|
SQL 数据库管理 索引
SQL基础——聚合与排序(下)
SQL基础——聚合与排序(下)
164 0
|
SQL
SQL基础——聚合与排序(上)
SQL基础——聚合与排序(上)
70 0
|
SQL 移动开发 BI
【SQL开发实战技巧】系列(二十三):数仓报表场景☞ 如何对数据排列组合去重以及通过如何找到包含最大值和最小值的记录这个问题再次用执行计划给你证明分析函数性能不一定高
怎样对数据组合重新排列并去重的问题、通过如何找到包含最大值和最小值的记录这个问题再次用执行计划给你证明分析函数性能不一定高【SQL开发实战技巧】这一系列博主当作复习旧知识来进行写作,毕竟SQL开发在数据分析场景非常重要且基础,面试也会经常问SQL开发和调优经验,相信当我写完这一系列文章,也能再有所收获,未来面对SQL面试也能游刃有余~。本篇文章主要介绍的两个方面,第一个方面曾经有好几个网友和同事问我,第二个问题真的是很多同行的通病,认为分析函数是万金油,一股脑用。
【SQL开发实战技巧】系列(二十三):数仓报表场景☞ 如何对数据排列组合去重以及通过如何找到包含最大值和最小值的记录这个问题再次用执行计划给你证明分析函数性能不一定高
|
前端开发
前端学习案例1-数组反序&排序&乱序的方法
前端学习案例1-数组反序&排序&乱序的方法
71 0
前端学习案例1-数组反序&排序&乱序的方法
|
数据挖掘
白话Elasticsearch43-深入聚合数据分析之案例实战__排序:按每种颜色的平均销售额升序排序
白话Elasticsearch43-深入聚合数据分析之案例实战__排序:按每种颜色的平均销售额升序排序
83 0
|
存储 人工智能 搜索推荐
【八大数据排序法】堆积树排序法的图形理解和案例实现 | C++
排序算法是我们在程序设计中经常见到和使用的一种算法,它主要是将一堆不规则的数据按照递增或递减的方式重新进行排序。在如今的互联网信息时代,随着大数据和人工智能的发展,大型企业的数据库中有亿级的用户数据量。因此对其进行处理,排序算法也就成为了其中必不可缺的步骤之一。
144 0
【八大数据排序法】堆积树排序法的图形理解和案例实现 | C++
|
存储
【每日一题Day90】LC1814统计一个数组中好对子的数目 | 哈希表
思路:如果两个数满足好对子,那么这两个数反转后的变化量相同。因此可以使用哈希表存放反转后的变化量及其次数count,该变化量存在的所有好对子个数为count∗(count−1)/2
72 0
|
自然语言处理 算法 关系型数据库
常用查询算法(顺序扫描法)|学习笔记
快速学习常用查询算法(顺序扫描法)
291 0
【刷题记录】40. 组合总和 II
【刷题记录】40. 组合总和 II
107 0
【刷题记录】40. 组合总和 II
【刷题记录】39. 组合总和
【刷题记录】39. 组合总和
122 0
【刷题记录】39. 组合总和