题解 | SQL288 获得积分最多的人(一)

WITH t1 AS (
	SELECT
    	user_id,
    	IF(type='add',grade_num,-grade_num) AS grade_num
    FROM grade_info
),
t2 AS (
	SELECT
    	user_id,
    	SUM(grade_num) AS grade_num
    FROM t1
    GROUP BY user_id
),
t3 AS (
	SELECT
    	user_id,
    	grade_num,
    	RANK() OVER(ORDER BY grade_num DESC) AS ranking
    FROM t2
),
t4 AS (SELECT name,
	   grade_num
	FROM t3
	LEFT JOIN user u
	ON t3.user_id = u.id
	WHERE ranking = 1
)
SELECT * FROM t4;

-- 这道题关键在于求和时候要进行group by!

全部评论

相关推荐

小鹏、大疆、米哈游、MinMax小鹏上午投的下午就约面,进度未免也太快了
蛇年行大运fff:哥们 盗贴有意思吗,我发xhs上的给你搬过来了😅😅😅
点赞 评论 收藏
分享
07-15 14:14
门头沟学院 Java
7.10投递7.15感谢信
投递地平线等公司7个岗位
点赞 评论 收藏
分享
码农索隆:想看offer细节
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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