题解 | #获得积分最多的人(二)#
获得积分最多的人(二)
https://www.nowcoder.com/practice/b6248d075d2d4213948b2e768080dc92
#①先计算每个用户id总增加积分
select user_id,sum(grade_num)
from grade_info
group by user_id
#②按照总积分排序
select rank() over(order by a.num desc)
from (
select user_id,sum(grade_num) as 'num'
from grade_info
group by user_id
)a
#③查找总积分最多的用户id
select b.user_id,b.num
from(
select *,rank() over(order by a.num desc) as 'rk'
from (
select user_id,sum(grade_num) as 'num'
from grade_info
group by user_id)a
)b
where b.rk=1
order by b.user_id
#④连接name表查找id对应名称
select c.user_id,d.name,c.num
from (
select b.user_id,b.num
from(
select *,rank() over(order by a.num desc) as 'rk'
from (
select user_id,sum(grade_num) as 'num'
from grade_info
group by user_id)a
)b
where b.rk=1
order by b.user_id
)c
left join user d
on c.user_id = d.id

查看14道真题和解析