题解 | 获得积分最多的人(一)
获得积分最多的人(一)
https://www.nowcoder.com/practice/1bfe3870034e4efeb4b4aa6711316c3b
第一次写的代码使用了嵌套子查询,并在嵌套查询里使用了聚合函数,不够简洁,原因是对join (inner join)的理解不够深。
select
u.name,
t.grade_num
from user u
join (
select
user_id,
sum(grade_num) as grade_num
from grade_info
where type = 'add'
group by user_id
) t
on u.id = t.user_id
order by t.grade_num desc
limit 1
更加简洁的代码,直接inner join。
SELECT u.name, SUM(g.grade_num) AS grade_sum FROM user u JOIN grade_info g ON u.id = g.user_id GROUP BY u.id, u.name ORDER BY grade_sum DESC LIMIT 1;
查看25道真题和解析