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

最差是第几名(二)

https://www.nowcoder.com/practice/165d88474d434597bcd2af8bf72b24f1?tpId=82&tags=&title=&difficulty=0&judgeStatus=0&rp=1&sourceUrl=%2Fexam%2Foj%3Fpage%3D2%26tab%3DSQL%25E7%25AF%2587%26topicId%3D82

用两个sum窗口函数,一个升序,一个降序,中位数一定满足两个累积和都>=总数/2

SELECT grade from(select grade,sum(number)over(order by grade)sn1,sum(number)over(order by grade desc)sn2 
from class_grade)t where sn1>=(select sum(number)/2 from class_grade) 
and sn2>=(select sum(number)/2 from class_grade)
order by grade

我还有个想法,可以先用一个sum窗口函数,再对它使用lag窗口函数,应该也可以做。不过估计代码会麻烦一点,会多个子查询,就先不写了

SQL题解 文章被收录于专栏

主要是为自己做个笔记

全部评论

相关推荐

深夜书店vv:腾讯是这样的,去年很多走廊都加桌子当工区
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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