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

最差是第几名(二)

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

相关推荐

05-29 20:34
门头沟学院 C++
KarlAllen:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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