题解 | #获得积分最多的人(三)#

获得积分最多的人(三)

https://www.nowcoder.com/practice/d2b7e2a305a7499fb310dc82a43820e8

SELECT 
    tt.user_id, 
    user.name,
    tt.sum_num 
FROM 
(
    SELECT 
        * , 
        DENSE_RANK() OVER( ORDER BY sum_num DESC ) AS rk 
    FROM 
    (
        SELECT 
            user_id, 
            SUM(
                CASE 
                    WHEN type = 'add' THEN grade_num 
                    WHEN type = 'reduce' THEN -1 * grade_num
                ELSE 0 
                END 
            ) AS sum_num 
        FROM 
            grade_info 
        GROUP BY 
            user_id 
    ) AS tmp 
) AS tt 
LEFT OUTER JOIN 
    user
ON 
    tt.user_id = user.id 
WHERE rk <=1 
;

全部评论

相关推荐

不愿透露姓名的神秘牛友
08-08 10:30
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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