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

最差是第几名(二)

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

解题思路

  1. 将grade的名次的范围找出来
select grade,(select sum(number) from class_grade c1 where c1.grade < c2.grade) as s, (select sum(number) from class_grade c1 where c1.grade <= c2.grade) as e
from class_grade c2
order by grade
grade start end
A None 2
B 2 6
C 6 10
D 10 12
  1. 判断 sum(number/2) 的值在 grade 的那个区间内即可.
select grade from 
    (select grade,(select sum(number) from class_grade c1 where c1.grade < c2.grade) as s, (select sum(number) from class_grade c1 where c1.grade <= c2.grade) as e
    from class_grade c2
    order by grade) as t1 , (select sum(number) as sums from class_grade) as t2
    where (sums/2) between s and e
全部评论
应该把start列中的sum(number) 换成ifnull(sum(number),0)+1。否则组上限不准确
1 回复 分享
发布于 2022-04-18 01:06

相关推荐

02-19 21:34
门头沟学院 Java
暴风雨来了:缩成一页,如果找工作的话,最好是要有实习经历,简历也需要改一改,可以私我帮你改一改包装一段实习经历,或者自己在网上找一找冷门的项目,自己包装一下。没有实习经历肯定是不行的。
点赞 评论 收藏
分享
评论
5
1
分享

创作者周榜

更多
牛客网
牛客企业服务