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

最差是第几名(二)

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

/*
select sum(number)/2 as mid_num from class_grade;

select grade, sum(number) over(order by grade) as t_rank
from class_grade;

select grade, sum(number) over(order by grade desc) as f_rank
from class_grade;
*/
select a.grade
from 
    (select grade, sum(number) over(order by grade) as t_rank 
     from class_grade) as a /*grade正序排序*/
left outer join
    (select grade, sum(number) over(order by grade desc) as f_rank
    from class_grade) as b /*grade降序排序*/
on a.grade = b.grade
where a.t_rank >= (select sum(number)/2 as mid_num from class_grade)
and b.f_rank >= (select sum(number)/2 as mid_num from class_grade)
order by a.grade;

只要想通一个点,问题就不困难。

所谓中位数就是正序排序大于等于平均数的同时降序排序也大于等于平均数的数。

MySQL试题答案解析 文章被收录于专栏

MySQL在线编程重点试题解析

全部评论

相关推荐

kzn_ye:看成被正职干了半年,我还以为。。。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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