题解 | #查询每天刷题通过数最多的前二名用户id和刷题数#
查询每天刷题通过数最多的前二名用户id和刷题数
https://www.nowcoder.com/practice/b9cc0d5047f94bc0a661c5a0a230b9cd
/*查询思路
1.考虑到每个用户每天不止刷一类题目,因此首先查询每个用户每天刷各类题目的总数 p_count,按user_id和date分组,得到临时表t1
2.对临时表t1按照题目要求,以date分组并按照p_count排序,得到临时表t2
3.对临时表t2按照题目要求,过滤rn前两名的用户答题信息
*/
SELECT t2.date,t2.user_id,t2.p_count AS pass_count
FROM (
SELECT t1.date,t1.user_id,t1.p_count,DENSE_RANK() OVER (PARTITION BY t1.date ORDER BY p_count DESC) rn
FROM (
SELECT date,user_id,SUM(pass_count) p_count
FROM questions_pass_record
GROUP BY user_id,date) AS t1
) AS t2
WHERE t2.rn BETWEEN 1 AND 2
ORDER BY t2.date
查看6道真题和解析