题解 | #每类试卷得分前3名#
每类试卷得分前3名
https://www.nowcoder.com/practice/255aa1863fe14aa88694c09ebbc1dbca
select * from(
select
tag as tid,
uid,
ROW_NUMBER()OVER(PARTITION BY tag ORDER BY max(score) desc,min(score) desc,uid desc) ranking
from
examination_info
join exam_record using (exam_id)
group by tid,uid) as newform
where newform.ranking <= 3
本题难度是比较大的,必须取row_number()over()来计算每行的排列顺序,用partion by tag来根据标签进行排序,由于是有group by 关键词所以排序规则只能选择uid或者tag,或者min()max()函数去取值。
