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

最差是第几名(二)

http://www.nowcoder.com/practice/165d88474d434597bcd2af8bf72b24f1

正序和逆序的序号之差为最小值的就是中位数。
取最小值的时候,我感觉自己做得有点绕了。。。
不过一时没想到应该怎么写比较清爽,大神路过帮我看下哈。

SELECT t2.grade
FROM(
    SELECT *,MIN(t.n) OVER() AS m
    FROM 
    (
        SELECT grade, ABS(SUM(number) OVER(ORDER BY grade)-SUM(number) OVER(ORDER BY grade DESC) )AS n
        FROM class_grade
    ) AS t) AS t2
WHERE t2.n=t2.m
ORDER BY grade
全部评论
不是大神,中位数的思路也是看评论的,感觉你的这样改会清爽一点,把你的代码中的t表弄成临时表:with t as (SELECT grade, ABS(SUM(number) OVER(ORDER BY grade)-SUM(number) OVER(ORDER BY grade DESC) )AS n FROM class_grade) select grade from t where n=(select min(n) from t) order by grade;
1 回复 分享
发布于 2021-04-26 15:21

相关推荐

巧克力1:双选会不如教室宣讲会
点赞 评论 收藏
分享
dongsheng66:如果想进大厂的话,在校经历没必要占这么大篇幅,可以把专业技能单独放一个专栏写,可以加个项目经历
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务