题解 | #最差是第几名(一)#

最差是第几名(一)

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

弯路饶了不少,最差——设其为每个等级的最后一个,则就是个累加过程。
1、case when + 子查询

select grade,
case grade when 'A' then (select sum(number) from class_grade where grade <= 'A')
           when 'B' then (select sum(number) from class_grade where grade <= 'B')
           when 'C' then (select sum(number) from class_grade where grade <= 'C')
           when 'D' then (select sum(number) from class_grade where grade <= 'D')
           else (select sum(number) from class_grade where grade <= 'E')
end as t_rank
from class_grade
order by grade;

2、开窗函数 sum() over() 更简便

select grade, sum(number) over(order by grade) as t_rank
from class_grade 
order by grade;

3、联结

SELECT a.grade,SUM(b.number) AS t_rank
FROM class_grade a
inner join class_grade b
ON a.grade >= b.grade
GROUP BY a.grade
ORDER BY a.grade asc;
全部评论

相关推荐

07-18 14:34
门头沟学院 Java
感觉招聘要求好高,这都是招什么人才
电气电子小朋友:你都说了这是大疆,无人机顶级企业,薪资30k-50k,要求高是正常的
点赞 评论 收藏
分享
能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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