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

全部评论

相关推荐

评论
20
收藏
分享

创作者周榜

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