题解 | #获得积分最多的人(二)#
获得积分最多的人(二)
https://www.nowcoder.com/practice/b6248d075d2d4213948b2e768080dc92
第一步,根据用户id获取到积分增加总和,利用group by对用户id进行分组
select gi.user_id as id, sum(gi.grade_num) as sumfrom user as u, grade_info as giwhere u.id = gi.user_id and gi.type = 'add'group by gi.user_id
第二步,从当前记录表中获取最大值
select max(r1.sum) as grade_numfrom (select sum(gi.grade_num) as sumfrom grade_info as giwhere gi.type = 'add'group by gi.user_id) as r1
第三步,进行交集,取出和最大值相等的数据
select r1.id, u.name,r1.sum as grade_numfrom (select gi.user_id as id, sum(gi.grade_num) as sum from user as u, grade_info as gi where u.id = gi.user_id and gi.type = 'add' group by gi.user_id) as r1join user as u on u.id = r1.idwhere r1.sum >= (select max(r1.sum) as grade_numfrom (select sum(gi.grade_num) as sum from grade_info as gi where gi.type = 'add' group by gi.user_id) as r1)