题解 | #每类试卷得分前3名#

每类试卷得分前3名

http://www.nowcoder.com/practice/255aa1863fe14aa88694c09ebbc1dbca

  • 在进行排序测试的时候需要弄清楚一件事, 就是每类试卷每个人 做了不止一次,因此在排序的时候有最大值最小值之分(范围并不是该用户所有试卷)
# SELECT
#         tag,
#         uid,score
#         FROM exam_record
#         JOIN examination_info USING(exam_id)
#         WHERE uid = "1001"

实例代码如下:

SELECT * FROM 
(
        SELECT
        tag,
        uid,
        row_number() OVER (PARTITION BY tag ORDER BY MAX(score) DESC,MIN(score) DESC, uid DESC) as rk
       
        FROM exam_record er
        JOIN examination_info ei ON er.exam_id=ei.exam_id
        GROUP BY tag,uid
) a
WHERE rk < 4
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务