题解 | #获得积分最多的人(一)#
获得积分最多的人(一)
http://www.nowcoder.com/practice/1bfe3870034e4efeb4b4aa6711316c3b
SELECT name,sum(grade_num) g_sum
FROM user u JOIN grade_info g ON u.id=g.user_id
GROUP BY id
ORDER BY sum(grade_num) DESC
LIMIT 1
由于此题数据保证积分最高的用户有且只有1个,使用limit即可 如果默认有并列第一,那么使用from子查询,在子查询中使用desen_rank即可
SELECT name,grade_sum
FROM (SErade_sum,dense_rank() over(ORDER by grade_sum DESC) r
FROM (SELECT distinct user_id,sum(grade_num) over(PARTITION BY user_id) grade_sum
FROM grade_info) gf) gr
JOIN user u ON u.id=gr.user_id
WHERE r=1