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

最差是第几名(二)

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

sql求中位数
窗口函数法:(简单又巧妙)
正序:1 2 3 4 5
倒序:5 4 3 2 1===================》中位数3
正序:1 2 3 4 5 6
逆序:6 5 4 3 2 1=================》中位数3 4
结论;where a=b or abs(b-a)=1#要么相等要么相差1

1、如果是序列数字,则需要用窗口函数row_number()对每个数字标号,over(order by ** asc)as a
over(order by ** desc)as b
2、如果需要对序列和求中位数,则有一个思想就是:求出正序和a和逆序和b,全部数字total。
key:判断条件:where a>=total/2 and b>=total/2
本题答案:
select t.grade
from
(
select
grade,
sum(number) over() as total,
sum(number) over(order by grade asc)as asc_grade,
sum(number) over(order by grade desc)as desc_grade
from class_grade
)as t
where t.asc_grade>=t.total/2 and t.desc_grade>=t.total/2
order by t.grade;

全部评论

相关推荐

八极星:有什么不能问的,(/_\),这又不是多珍贵的机会,你有什么可失去的
点赞 评论 收藏
分享
11-29 00:55
门头沟学院
区域赛银,邀请赛金,打算十二月打下Java基础、背点八股、写个外卖后去投福建小厂的寒假实习,简历应该怎么写呢?以及福州/和厦门有推荐的小厂吗?
牛客53210502...:简历一页:把区域银,邀请赛金标粗,其他的奖除非凑一页否则没有必要写。或者多页:每个站一行这样都列出来。项目经历看看牛客其他人是怎么写的,写的不好呢。简历打磨好按部就班没问题的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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