-- 查询各个岗位分数升序排列之后的中位数位置的范围 -- 查找中位数范围: -- 先分语言统计总数 -- 然后分两种情况:如果总数是偶数;如果是奇数 -- 并且按job升序排序 WITH c_s AS ( SELECT job, COUNT(score) OVER (PARTITION BY job) AS num FROM grade ) SELECT distinct job, CASE WHEN MOD(num, 2) != 0 THEN round(CEIL(num / 2.0),0) ELSE round(num / 2,0) END AS start, CASE WHEN MOD(num, 2) != 0 THEN round(CEIL(num / 2.0),0) ELSE round((num / 2) + 1,0) END AS end FROM c_s ORDER BY job;
学会了用case when赋值变量的语法规范