确实难啊写这个区间 | #最差是第几名(二)#
最差是第几名(二)
https://www.nowcoder.com/practice/165d88474d434597bcd2af8bf72b24f1
WITH ranked AS( SELECT grade, number, SUM(number) OVER () AS total, SUM(number) OVER (ORDER BY grade) AS roll FROM class_grade ORDER BY grade ) SELECT grade FROM ranked WHERE (total % 2 = 0 AND (((total / 2) BETWEEN (roll - number + 1) AND roll) #偶数 OR ((total / 2 + 1) BETWEEN (roll - number + 1) AND roll))) OR (total % 2 = 1 AND ((total + 1) / 2) BETWEEN (roll - number + 1) AND roll) #奇数 ORDER BY grade