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

最差是第几名(一)

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

很明显使用case when 语句

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

或者使用窗口函数:

-- 看上面的答案,千篇一律, order by grade 已经排过序了,因此就不用再排序了
select grade,
sum(number) over(order by grade) t_rank
from class_grade;
全部评论
使用 case 的情况下,最后一种情况else (select sum(number) from class_grade) 不能换成 sum(number) 不知道为什么?
点赞 回复 分享
发布于 2022-02-13 18:40

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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