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

简介: 先看下我找的题目,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

练习题的地址“戳我”

我们还有开窗的下一期哦

目录
相关文章
|
10月前
|
算法 JavaScript 测试技术
【数学】【组合数学】1830. 使字符串有序的最少操作次数
【数学】【组合数学】1830. 使字符串有序的最少操作次数
|
SQL 数据库管理 索引
SQL基础——聚合与排序(下)
SQL基础——聚合与排序(下)
183 0
|
SQL
SQL基础——聚合与排序(上)
SQL基础——聚合与排序(上)
87 0
|
算法
组合排序回溯编程题集合(leetcode)
组合排序回溯编程题集合(leetcode)
|
前端开发
前端学习案例1-数组反序&排序&乱序的方法
前端学习案例1-数组反序&排序&乱序的方法
93 0
前端学习案例1-数组反序&排序&乱序的方法
|
SQL Oracle 关系型数据库
【SQL开发实战技巧】系列(十三):讨论一下常用聚集函数&通过执行计划看sum()over()对员工工资进行累加
本篇文章讲解的主要内容是:***常用聚集函数及group by与空值的影响、详解通过执行计划看sum()over()分析函数。***
【SQL开发实战技巧】系列(十三):讨论一下常用聚集函数&通过执行计划看sum()over()对员工工资进行累加
|
SQL 移动开发 BI
【SQL开发实战技巧】系列(二十三):数仓报表场景☞ 如何对数据排列组合去重以及通过如何找到包含最大值和最小值的记录这个问题再次用执行计划给你证明分析函数性能不一定高
怎样对数据组合重新排列并去重的问题、通过如何找到包含最大值和最小值的记录这个问题再次用执行计划给你证明分析函数性能不一定高【SQL开发实战技巧】这一系列博主当作复习旧知识来进行写作,毕竟SQL开发在数据分析场景非常重要且基础,面试也会经常问SQL开发和调优经验,相信当我写完这一系列文章,也能再有所收获,未来面对SQL面试也能游刃有余~。本篇文章主要介绍的两个方面,第一个方面曾经有好几个网友和同事问我,第二个问题真的是很多同行的通病,认为分析函数是万金油,一股脑用。
【SQL开发实战技巧】系列(二十三):数仓报表场景☞ 如何对数据排列组合去重以及通过如何找到包含最大值和最小值的记录这个问题再次用执行计划给你证明分析函数性能不一定高
|
算法 搜索推荐
用函数的方法通过冒泡法实现对一个数组(乱序)到有序排序(由大到小排序)
用函数的方法通过冒泡法实现对一个数组(乱序)到有序排序(由大到小排序)
133 0
用函数的方法通过冒泡法实现对一个数组(乱序)到有序排序(由大到小排序)
|
存储 算法
四式解决回溯算法:组合+组合总和
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。
710 3