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

获得积分最多的人(三)

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 
;

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务