题解 | #获得积分最多的人(二)#
获得积分最多的人(二)
https://www.nowcoder.com/practice/b6248d075d2d4213948b2e768080dc92
主要根据2号网友得出的解题思路,里面加了一点自己的理解
select u.id,name,g #---4.最后写需要查找的字段
from
(select user_id,g,rank() over(order by g desc) r #---2.对t1表的累计积分使用rank() over()进行排序
from
(select distinct user_id,
sum(grade_num) over(partition by user_id) g
from grade_info
) t1)t2 #--- 1.先写出t1表,通过sum()over()计算出每位用户的累计积分并去重。
join user u #--- 3.与用户信息表连接,得到姓名信息
on t2.user_id = u.id
where t2.r = 1 #---5.根据题目要求,对数据进行限制
order by u.id