最差是第几名(二)题解

最差是第几名(二)

https://www.nowcoder.com/practice/165d88474d434597bcd2af8bf72b24f1?tab=answerKey

首先我们需要知道:当某一数的正序和逆序累计均大于整个序列的数字个数的一半即为中位数
比如:
A A B B C C D D 
1 2 3  4  5 6  7 8
8 7 6  5  4  3 2 1
那么上面的4,5以及5,4就是中位数,如果是奇数的话,就只有1个
再比如
A2个,B3个,C5个,D2个,
正序2,5,10,12
倒序12,10,7,2
正序和12,大于等于6的,为C,D,
逆序和为12,大于等于6的为ABC,所以最后中位数为C


根据(一)https://blog.nowcoder.net/n/60f8ed8d360c4307a8875349caf22b77 我们知道求正序和的写法,
求逆序和其实就是 sum(a) over (order by b desc) 就行了,多加了一个desc,那么我们可以写出如下代码:

 select grade,(select sum(number) from class_grade) as total,              
    sum(number) over(order by grade) a,              
    sum(number) over(order by grade desc) b           
 from class_grade order by grade;
得到中间表的结果如下:

将 a>=total的一半并且 b>=total的一半列出,就得到了最后需要的结果:
select grade from (select grade,(select sum(number) from class_grade) as total,
        sum(number) over(order by grade) a,
        sum(number) over(order by grade desc) b
        from class_grade) t1
where a >= total/2 and b >=total/2
order by grade;


全部评论
很棒的方法
3 回复 分享
发布于 2021-03-18 14:47
sqlite和mysql好像不太一样 这个答案适用于mysql 如果用于sqlite要a >= (total + 1) / 2 and b >= (total + 1) / 2
2 回复 分享
发布于 2021-10-25 11:52
标准的中位数要考虑到数组个数的奇偶问题,而且中位数位置的公式应该是(total+1)/2。我觉得,简单的都用total/2计算中位数并不合适啊
2 回复 分享
发布于 2021-06-18 14:37
你***真是个天才
1 回复 分享
发布于 2022-04-13 01:30
用文字给大佬点赞
1 回复 分享
发布于 2021-09-12 21:07
这个方法有问题,如果数据是('A',2),('D',1),('C',2),('B',2),查出来的结果是BC,其实正确的结果是B
1 回复 分享
发布于 2021-08-24 23:04
我觉得方法有点问题..换一个数据表,A,9; B,1; C,1;D,1...按照这个方法好像无法查出中位数.条件a>=total/2 and b>=total/2都只会查询出ABCD四个.而不是A.
1 回复 分享
发布于 2021-04-19 11:45
牛啊 没这个思路压根写不出来
6 回复 分享
发布于 2021-03-24 20:19
降维打击,哭了
4 回复 分享
发布于 2021-04-21 09:12
woshi *****
3 回复 分享
发布于 2021-07-27 20:07
我服了 这是怎么想到的啊
2 回复 分享
发布于 2023-02-10 19:18 山东
我觉得这题可以这么定义中位数是因为,题干中就说有两个可以输出两个,有一个就输出一个,不是统计学里定义的中位数
1 回复 分享
发布于 2021-12-12 21:27
如果总个数是偶数个的话,有两个中位数,且两个中位数的等级是一样的,按题目的意思不应该是输出两个麽,这个代码只会输出一个
1 回复 分享
发布于 2021-10-22 20:11
厉害厉害
点赞 回复 分享
发布于 2024-10-07 13:40 重庆
太厉害了,我根本想不到
点赞 回复 分享
发布于 2024-01-08 14:34 湖南
点赞 回复 分享
发布于 2023-03-04 15:34 上海
牛呀牛呀
点赞 回复 分享
发布于 2022-11-03 16:59 广东
只是恰好这道题是偶数个适用
点赞 回复 分享
发布于 2022-11-02 13:09 广东
这个思路确实很棒,完全想不到
点赞 回复 分享
发布于 2022-10-12 11:01 广东
这个好厉害啊,羡慕
点赞 回复 分享
发布于 2022-09-04 21:05 上海

相关推荐

评论
380
40
分享

创作者周榜

更多
牛客网
牛客企业服务