题解 | #获得积分最多的人(一)#

获得积分最多的人(一)

https://www.nowcoder.com/practice/1bfe3870034e4efeb4b4aa6711316c3b

思路1

自己想的,比较复杂

  • 先按照user_id 计算每个人的总积分
  • 取max(总积分)
  • 聚合表,把总积分加到最后一列。在表里筛选 where 总积分 = 第2步的值(即最大值)
  • select name 和总积分
select
    u.name,
    t.num_total as grade_num
from user u right join (
            select
                user_id,
                sum(grade_num) as num_total
            from grade_info
            group by user_id
)t on u.id = t.user_id

where t.num_total in (
    # 取最大值
  	select 
        max(num_total)
    from (
            select
                user_id,
                sum(grade_num) as num_total
            from grade_info
            group by user_id
    )a
)

解法2

参考评论区:

  • 用窗口函数计算每个人的总积分
  • order by 按总积分倒序
  • limit 1 取第一行(即最大值)
select 
    distinct name,
    sum(grade_num)over(partition by user_id) as grade_num
from grade_info g
    left join user u on g.user_id = u.id
order by grade_num desc
limit 1

全部评论

相关推荐

MGlory:我当初有一个老师告诉我简历要写的简单,最好只一面,项目可以写核心的,进面了自然会问你的
点赞 评论 收藏
分享
05-07 13:29
已编辑
门头沟学院 Java
北斗导航Compass低仿版:能不能先搞清楚优先级啊,怎么可能是项目问题,项目很重要吗?又没学历 又没实习大厂凭啥约面?那玩具项目 没应用在真实生产环境下的 就算做上天又有什么用?早点找个小公司实习 拿小公司实习去投大厂实习,这才是你现在该做的
投递美团等公司9个岗位 简历被挂麻了,求建议
点赞 评论 收藏
分享
04-13 18:10
门头沟学院 Java
想熬夜的小飞象在秋招:被腾讯挂了后爸妈以为我失联了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务