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

最差是第几名(二)

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题解 文章被收录于专栏

主要是为自己做个笔记

全部评论

相关推荐

科大讯飞消费者bg二级研究院 语音算法岗 24k*14
点赞 评论 收藏
转发
点赞 评论 收藏
转发
头像
05-07 12:50
Java
外包公司 售前支持 4000+1000绩效
点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务