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

京公网安备 11010502036488号