题解 | 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!

全部评论

相关推荐

双非本科小鼠:27兄弟,不应该还在享受校园吗哈哈😂
点赞 评论 收藏
分享
生命诚可贵:先不说内容怎么样 排版就已经太差劲了 第一眼看不到重点,第二眼已经没有再看的耐心了, 篇幅占的太满了 字体不要用灰色 观感不好 想重点突出的黑色加粗就可以了 多列要点 少些大段的句子 项目经历把项目用的技术要点列出来,光写个python plc什么的太宽泛了 自我评价也有点偏多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务