-- 各个职业对应的薪水中位数排名
SELECT
	job,
	floor((count(g.job)+ 1)/ 2),
	CEIL((count(g.job)+ 1)/ 2)
FROM
	grade g
GROUP BY
	g.job
ORDER BY
	g.job ASC;
-- 各个职业薪水排名
SELECT id,job,score,DENSE_RANK() over(PARTITION BY job ORDER BY score desc) t
FROM grade g;

-- 组合查询出最终结果
SELECT 
tmp2.*
FROM 
(SELECT
	job,
	floor((count(g.job)+ 1)/ 2) fl,
	CEIL((count(g.job)+ 1)/ 2) ce
FROM
	grade g
GROUP BY
	g.job
ORDER BY
	g.job ASC) tmp1,
	(SELECT id,job,score,DENSE_RANK() over(PARTITION BY job ORDER BY score desc) t_rank
FROM grade g) tmp2
WHERE tmp1.job = tmp2.job
AND (tmp1.fl = tmp2.t_rank OR tmp1.ce = tmp2.t_rank)
ORDER BY tmp2.id asc