题解 | #获得积分最多的人(三)#
获得积分最多的人(三)
https://www.nowcoder.com/practice/d2b7e2a305a7499fb310dc82a43820e8
with t1 as (
select user_id,
(case when type = 'add' then grade_num
else -grade_num end) as grade_change
from grade_info
),
# 将每一个人的总积分计算出来
t2 as (
select user_id, sum(grade_change) as total_grade
from t1
group by user_id
),
t3 as (
select user.id, user.name, t2.total_grade as grade_num
from t2
left join user
on user.id = t2.user_id
order by grade_num desc
)
select t3.*
from t3
where grade_num = (
select grade_num
from t3
limit 1
)
order by id;