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

最差是第几名(二)

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

select grade
from(
    select grade,
  		#本等级第一名排名=上一等级最后一名排名+1,A等级为1
  		if(t_rank_last is null,1,t_rank_last+1) t_rank_min,
  		t_rank_max,
  		#中位数最小排名
        if(all_stu % 2 = 0,all_stu/2,(all_stu+1)/2) mid_min,
  		#中位数最大排名
        if(all_stu % 2 = 0,all_stu/2 + 1,(all_stu+1)/2) mid_max
    from(
        select grade,
      		#上一等级的最后一名排名
      		sum(number) over(order by grade rows between unbounded preceding and 1 preceding) as t_rank_last,
      		#本等级最后一名排序
            sum(number) over(order by grade) t_rank_max,
      		#本班学生数
            sum(number) over() all_stu
        from class_grade
    ) t1 
) t2 
#筛选出中位数排名在本等级排名范围内的行
where t_rank_max >= mid_min and t_rank_min <= mid_max;
全部评论

相关推荐

头像
今天 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗?&nbsp;刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
10-27 17:26
东北大学 Java
点赞 评论 收藏
分享
威猛的小饼干正在背八股:挂到根本不想整理
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务