题解 | #获得积分最多的人(三)#
获得积分最多的人(三)
https://www.nowcoder.com/practice/d2b7e2a305a7499fb310dc82a43820e8
SELECT
t1.user_id,
t2.name,
t1.grade_num
FROM
(SELECT
user_id,
SUM(CASE
WHEN type = 'add' THEN grade_num
ELSE -grade_num
END) AS grade_num
FROM
grade_info
GROUP BY
user_id) t1
LEFT JOIN
user t2
ON
t1.user_id = t2.id
WHERE
t1.grade_num = (
SELECT DISTINCT MAX(grade_num) FROM (
SELECT
user_id,
SUM(CASE
WHEN type = 'add' THEN grade_num
ELSE -grade_num
END) AS grade_num
FROM
grade_info
GROUP BY
user_id
) AS max_grades
)
ORDER BY
t1.user_id;