最差是第几名(一)题解

最差是第几名(一)

http://www.nowcoder.com/questionTerminal/ae5e8273e73b4413823b676081bd355c

本题出题的题意其实主要是考察sum() over (order by ) 开窗函数,sum(a) over (order by b) 的含义是:
例如
a  b
1 2
3 4
5 6
按照b列排序,将a依次相加,得到结果,如下:
a  b  sum(a) over (order by b):
1 2    1
3 4    1+3
5 6    1+3+5

此题就是将b换成了grade,即使b列乱序也没关系,因为有order by b:
number  grade  sum(number) over(order by grade):
2    A    2
2    B    2+2
2    C    2+2+2
1    D    2+2+2+1

所以我们代码可以如下写:
select grade, sum(number) over(order by grade) t_rank 
from class_grade 
order by grade;


全部评论
窗口函数是全局排序,最后不需要再order by grade了
12 回复 分享
发布于 2021-06-17 17:35
学到了,第一次知道窗口函数可以不加partitionby
点赞 回复 分享
发布于 2024-09-28 14:24 北京
最后order by grade不需要
点赞 回复 分享
发布于 2023-09-03 08:34 河北
请假下:为什么 over函数 里不加 paitition by 分组呢? 不是要针对grade 分组嘛 ?
点赞 回复 分享
发布于 2022-04-14 11:27
得需要先排序确定哪个是第一个,那个是第二个, 再进行迭代
点赞 回复 分享
发布于 2022-02-16 14:25

相关推荐

程序员花海_:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
在写周报的打工人很独...:这个笔试昨天晚上做了一下,真难啊,前后端,ai全有
点赞 评论 收藏
分享
评论
102
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务