【Mysql】题解 | #获得积分最多的人(三)#

获得积分最多的人(三)

http://www.nowcoder.com/practice/d2b7e2a305a7499fb310dc82a43820e8

题目描述:SQL查找积分增加最高的用户的id,名字,以及他的总积分是多少(可能有多个),查询结果按照id升序排序。

步骤一:重新整理一遍grad_info表,把值改为存在负数形式。
步骤二:然后与user表连接,找出最大grade_num。

with new_grade_info as
(
    select user_id, 
       sum((case when type ="add" then grade_num else -1*grade_num end)) as grade_num
    from grade_info
    group by user_id
)
select u.id,u.name,ngi.grade_num
from user u join new_grade_info ngi
            on u.id=ngi.user_id
where ngi.grade_num >= all (select grade_num from new_grade_info)
牛客题霸-SQL篇【Mysql】 文章被收录于专栏

少壮不努力,老大勤刷题

全部评论

相关推荐

仁者伍敌:牛子这些人还会点一个自动回复,boss都不带回复的
点赞 评论 收藏
分享
lllllkin:感觉可以精简到一页简历,有些排版感觉不是必须的。 时间线越早的,你自己越熟悉的放前面。描述可以更精简些,一些问题解决感觉可以不用写具体技术栈,卖个关子,等面试官问。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务