SQL 89) 获得积分最多的人(一)

获得积分最多的人(一)

http://www.nowcoder.com/questionTerminal/1bfe3870034e4efeb4b4aa6711316c3b

使用窗口函数sum()over()来解答

  • 虽然但是,我觉得是有点歧义的,他问题应该问成:总积分最高的 而不是 增加积分最高的
select u.name, g.grade
from
(select user_id, sum(grade_num)over(partition by user_id) grade
from grade_info
order by grade desc
limit 1)g
join
user as u
on g.user_id = u.id
SQL 文章被收录于专栏

SQL

全部评论
sum(grade_num)over(partition by user_id) grade 没看懂这行什么意思 我去csdn搜搜 over
点赞 回复 分享
发布于 2021-07-25 13:07
哦 是sql server 有的啊 没学过这个。。。
点赞 回复 分享
发布于 2021-07-25 13:09
用limit 1是无法取出总成绩一样的所有user_id的,建议用dense_rank() 排序
点赞 回复 分享
发布于 2021-08-20 14:49
SELECT a.name,b.grade_sum from user a join (select sum(grade_num) grade_sum,user_id from grade_info group by user_id limit 1) b on a.id=b.user_id 我这个代码为什么写出来会报错啊 结果是对的
点赞 回复 分享
发布于 2021-09-19 17:04
我也觉得题目没描述好,搞得我去求单次增加积分最高的用户,以及求他的总和
点赞 回复 分享
发布于 2022-08-01 10:30
同意,白痴题目,浪费我时间去求单次增加最高,再求总积分最高
点赞 回复 分享
发布于 2022-11-02 14:31 广东
这个题目如果直接求总积分最高,不用窗口也能做。select name ,sum(grade_num) from grade_info g left join user u on u.id = g.user_id group by 1 order by 2 desc limit 1
点赞 回复 分享
发布于 2023-02-11 11:24 北京

相关推荐

10-30 23:23
已编辑
中山大学 Web前端
去B座二楼砸水泥地:这无论是个人素质还是专业素质都👇拉满了吧
点赞 评论 收藏
分享
20 收藏 评论
分享
牛客网
牛客企业服务