题解 | #查询每天刷题通过数最多的前二名用户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