题解 | #考试分数(五)#

考试分数(五)

http://www.nowcoder.com/practice/b626ff9e2ad04789954c2132c74c0512

SELECT f.id,f.job,f.score,f.t_rank
FROM
(SELECT id,job,score,ROW_NUMBER()OVER(PARTITION BY job ORDER BY score DESC) AS t_rank
FROM grade ) AS f JOIN 
(SELECT job,CASE WHEN COUNT(id)%2=0 THEN CEILING(COUNT(id)*1/2)
            ELSE CEILING(COUNT(id)*1/2) END AS st,
            CASE WHEN COUNT(id)%2=0 THEN CEILING(COUNT(id)*1/2+1) 
            ELSE CEILING(COUNT(id)*1/2) END AS ed
            FROM grade
            GROUP BY job
            ORDER BY job) AS f1
ON f.job=f1.job
WHERE f.t_rank=f1.st
OR f.t_rank=f1.ed
ORDER BY f.id       
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务