牛客每天有很多用户刷题,发帖,点赞,点踩等等,这些都会记录相应的积分。 有一个用户表(user),简况如下: 还有一个积分表(grade_info),简况如下: 第1行表示,user_id为1的用户积分增加了3分。 第2行表示,user_id为2的用户积分增加了3分。 第3行表示,user_id为1的用户积分减少了1分。 ……. 最后1行表示,user_id为3的用户积分减少了1分。 请你写一个SQL查找积分增加最高的用户的id,名字,以及他的总积分是多少(可能有多个),查询结果按照id升序排序,以上例子查询结果如下: 解释: user_id为1和3的先加了3分,但是后面又减了1分,他们2个是2分, 其他3个都是3分,所以输出其他三个的数据-笔试面试资料

这是qklbishe.com第8693 篇笔试面试资料
提供答案分析,通过本文《牛客每天有很多用户刷题,发帖,点赞,点踩等等,这些都会记录相应的积分。 有一个用户表(user),简况如下:

还有一个积分表(grade_info),简况如下:
第1行表示,user_id为1的用户积分增加了3分。 第2行表示,user_id为2的用户积分增加了3分。 第3行表示,user_id为1的用户积分减少了1分。
……. 最后1行表示,user_id为3的用户积分减少了1分。
请你写一个SQL查找积分增加最高的用户的id,名字,以及他的总积分是多少(可能有多个),查询结果按照id升序排序,以上例子查询结果如下:

解释: user_id为1和3的先加了3分,但是后面又减了1分,他们2个是2分, 其他3个都是3分,所以输出其他三个的数据-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

区块链毕设学生每天有很多用户刷题,发帖,点赞,点踩等等,这些都会记录相应的积分。
有一个用户表(user),简况如下:
区块链毕设学生每天有很多用户刷题,发帖,点赞,点踩等等,这些都会记录相应的积分。       有一个用户表(user),简况如下:                                 还有一个积分表(grade_info),简况如下:                第1行表示,user_id为1的用户积分增加了3分。       第2行表示,user_id为2的用户积分增加了3分。       第3行表示,user_id为1的用户积分减少了1分。         .......       最后1行表示,user_id为3的用户积分减少了1分。                请你写一个SQL查找积分增加最高的用户的id,名字,以及他的总积分是多少(可能有多个),查询结果按照id升序排序,以上例子查询结果如下:                  解释:       user_id为1和3的先加了3分,但是后面又减了1分,他们2个是2分,       其他3个都是3分,所以输出其他三个的数据
还有一个积分表(grade_info),简况如下:
区块链毕设学生每天有很多用户刷题,发帖,点赞,点踩等等,这些都会记录相应的积分。       有一个用户表(user),简况如下:                                 还有一个积分表(grade_info),简况如下:                第1行表示,user_id为1的用户积分增加了3分。       第2行表示,user_id为2的用户积分增加了3分。       第3行表示,user_id为1的用户积分减少了1分。         .......       最后1行表示,user_id为3的用户积分减少了1分。                请你写一个SQL查找积分增加最高的用户的id,名字,以及他的总积分是多少(可能有多个),查询结果按照id升序排序,以上例子查询结果如下:                  解释:       user_id为1和3的先加了3分,但是后面又减了1分,他们2个是2分,       其他3个都是3分,所以输出其他三个的数据
第1行表示,user_id为1的用户积分增加了3分。
第2行表示,user_id为2的用户积分增加了3分。
第3行表示,user_id为1的用户积分减少了1分。
…….
最后1行表示,user_id为3的用户积分减少了1分。
请你写一个SQL查找积分增加最高的用户的id,名字,以及他的总积分是多少(可能有多个),查询结果按照id升序排序,以上例子查询结果如下:
区块链毕设学生每天有很多用户刷题,发帖,点赞,点踩等等,这些都会记录相应的积分。       有一个用户表(user),简况如下:                                 还有一个积分表(grade_info),简况如下:                第1行表示,user_id为1的用户积分增加了3分。       第2行表示,user_id为2的用户积分增加了3分。       第3行表示,user_id为1的用户积分减少了1分。         .......       最后1行表示,user_id为3的用户积分减少了1分。                请你写一个SQL查找积分增加最高的用户的id,名字,以及他的总积分是多少(可能有多个),查询结果按照id升序排序,以上例子查询结果如下:                  解释:       user_id为1和3的先加了3分,但是后面又减了1分,他们2个是2分,       其他3个都是3分,所以输出其他三个的数据
解释:
user_id为1和3的先加了3分,但是后面又减了1分,他们2个是2分,
其他3个都是3分,所以输出其他三个的数据

区块链毕设学生每天有很多用户刷题,发帖,点赞,点踩等等,这些都会记录相应的积分。       有一个用户表(user),简况如下:                                 还有一个积分表(grade_info),简况如下:                第1行表示,user_id为1的用户积分增加了3分。       第2行表示,user_id为2的用户积分增加了3分。       第3行表示,user_id为1的用户积分减少了1分。         .......       最后1行表示,user_id为3的用户积分减少了1分。                请你写一个SQL查找积分增加最高的用户的id,名字,以及他的总积分是多少(可能有多个),查询结果按照id升序排序,以上例子查询结果如下:                  解释:       user_id为1和3的先加了3分,但是后面又减了1分,他们2个是2分,       其他3个都是3分,所以输出其他三个的数据 区块链毕设学生80957172号
1、创建t1表,取出user_id,和通过if添加正负号的分数grade_num。
2、分组求和得到user_id及对应的总分数grade_sum,并通过WITH……AS……打包成临时表t,方便后续多次引用
3、WHERE筛选出grade_sum=最大值的行,连接并取出题目所需列
WITH t AS (     SELECT  user_id,SUM(grade_num) AS grade_sum     FROM (SELECT user_id,grade_num * IF(type= 'add',1,-1) AS grade_num           FROM grade_info )AS t1     GROUP BY user_id ) SELECT id,name,grade_sum FROM t JOIN user u ON u.id = t.user_id WHERE grade_sum  = (SELECT MAX(grade_sum) FROM t)

今天 23:12:30 回复(0)
区块链毕设学生每天有很多用户刷题,发帖,点赞,点踩等等,这些都会记录相应的积分。       有一个用户表(user),简况如下:                                 还有一个积分表(grade_info),简况如下:                第1行表示,user_id为1的用户积分增加了3分。       第2行表示,user_id为2的用户积分增加了3分。       第3行表示,user_id为1的用户积分减少了1分。         .......       最后1行表示,user_id为3的用户积分减少了1分。                请你写一个SQL查找积分增加最高的用户的id,名字,以及他的总积分是多少(可能有多个),查询结果按照id升序排序,以上例子查询结果如下:                  解释:       user_id为1和3的先加了3分,但是后面又减了1分,他们2个是2分,       其他3个都是3分,所以输出其他三个的数据 Christine–
#1.加个case when 判断条件得到按用户分类的总积分情况表
#2.窗口函数对总积分进行desc排序
#3.选择ranking=1的
select t2.id,t2.name,t2.grade_sum from (select t1.*,rank() over(order by t1.grade_sum desc) as ranking from (select user.id,name,sum(     case when type='add' then grade_num     else -grade_num end) as grade_sum from user left join grade_info on user.id=grade_info.user_id group by user.id) as t1) as t2 where t2.ranking=1 order by t2.id;

今天 21:27:48 回复(0)
区块链毕设学生每天有很多用户刷题,发帖,点赞,点踩等等,这些都会记录相应的积分。       有一个用户表(user),简况如下:                                 还有一个积分表(grade_info),简况如下:                第1行表示,user_id为1的用户积分增加了3分。       第2行表示,user_id为2的用户积分增加了3分。       第3行表示,user_id为1的用户积分减少了1分。         .......       最后1行表示,user_id为3的用户积分减少了1分。                请你写一个SQL查找积分增加最高的用户的id,名字,以及他的总积分是多少(可能有多个),查询结果按照id升序排序,以上例子查询结果如下:                  解释:       user_id为1和3的先加了3分,但是后面又减了1分,他们2个是2分,       其他3个都是3分,所以输出其他三个的数据 SunburstRun
通过(二) ,https://blog.nowcoder.net/n/16f63360bbeb4ecabbfd45c492c8567e
我们知道,全是加的时候是怎么做的,但是出现了减,有点难办了,但是可以看看这个题目的解法:
https://blog.nowcoder.net/n/65a0bdc0d8634171898b03c1cc463f5a
可以使用一个sum(case when )语句,来逐个统计是加还是减,并统计最后的和,就可以写出如下代码:
select user.id, user.name,t.grade_sum from( select user_id,sum(case type when 'add' then grade_num else -grade_num end) as grade_sum from grade_info group by user_id having grade_sum=(select sum(case type when 'add' then grade_num else -grade_num end ) as grade_sum from grade_info group by user_id order by grade_sum desc limit 1)  ) t join user on t.user_id=user.id order by user.id 

今天 15:39:53 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 牛客每天有很多用户刷题,发帖,点赞,点踩等等,这些都会记录相应的积分。 有一个用户表(user),简况如下: 还有一个积分表(grade_info),简况如下: 第1行表示,user_id为1的用户积分增加了3分。 第2行表示,user_id为2的用户积分增加了3分。 第3行表示,user_id为1的用户积分减少了1分。 ……. 最后1行表示,user_id为3的用户积分减少了1分。 请你写一个SQL查找积分增加最高的用户的id,名字,以及他的总积分是多少(可能有多个),查询结果按照id升序排序,以上例子查询结果如下: 解释: user_id为1和3的先加了3分,但是后面又减了1分,他们2个是2分, 其他3个都是3分,所以输出其他三个的数据-笔试面试资料

提供最优质的资源集合

立即查看 了解详情