帝王血统的蚂蚱
帝王血统的蚂蚱
全部文章
题解
归档
标签
去牛客网
登录
/
注册
帝王血统的蚂蚱的博客
全部文章
/ 题解
(共94篇)
题解 | #考试分数(二)#
用子查询根据job分组并选出每组平均值,通过job连接子查询和原表grade,这样就能在原表基础上每行增加当前job的平均分。然后在where里限制分数大于平均值并最后排一下序就好了 select g.id, g.job, g.score from grade as g, (select job,...
Mysql
2021-10-30
0
268
题解 | #考试分数(一)#
根据job分组汇总,并算出每组score的平均值,取三位小数。最后按平均值逆排序。 select job, round(avg(score),3) as avg from grade group by job order by avg desc
Mysql
2021-10-30
0
369
题解 | #牛客每个人最近的登录日期(六)#
首先将login,passing_number,user根据user_id和date连接,将范围限制在有刷题的日期。然后选出user name,刷题日期并用sum()搭配窗口函数根据user_id分组汇总并按date的顺序对passing_number每天进行累加,就能得到每个人在每个刷题日的刷题累...
Mysql
2021-10-30
0
321
题解 | #牛客每个人最近的登录日期(五)#
首先建一个表temp以便之后使用。temp表记录的是用户id,用户最早登陆日期,以及最早登陆日期后一天有没有登陆。通过group by用户id搭配min(date)我们可以得到每个用户的最早登陆日期。然后用if来判断(user_id和最早登陆日期的后一天)这一对值是否在login表中,换句话说就是判...
Mysql
2021-10-30
0
332
题解 | #牛客每个人最近的登录日期(四)#
1.解法一 首先通过子查询选出每一个user的user_id和最早登陆时间,并命名为temp。 (select user_id, min(date) as min_date from login group by user_id) as temp 然后用left join连接原表login和te...
Mysql
2021-10-28
0
368
题解 | #牛客每个人最近的登录日期(三)#
用子查询选出每个用户的user_id和第一天登陆日期并存为temp。然后从temp选出user_id和最早登陆时间min_date,用date_add()获取第二天登陆日期,并检查将(user_id,第二天登陆日期)这个字段对在不在login表中,如果在的话就标1,代表用户第二天登陆。将整个查询作为...
Mysql
2021-10-28
0
428
题解 | #牛客每个人最近的登录日期(二)#
首先在子查询连接题中的几个表并中选出所有需要的字段,并用row_number根据name分组汇总并根据date从大到小排序标号。然后从子查询中选出所需字段并限制标号为1。 select name, c_name, date from (select u.name, c.name as c_name...
Mysql
2021-10-28
0
307
题解 | #牛客每个人最近的登录日期(一)#
根据user_id分组汇总,选出user_id和date的最大值,并按user_id排序 select user_id, max(date) as d from login group by user_id order by user_id
Mysql
2021-10-28
0
315
题解 | #异常的邮件概率#
通过子查询选出不在黑名单的id,并限制receive_id,send_id在子查询结果中。然后用group by根据date分组汇总,选出字段date并且计算每组中type="no_completed"的比例,这里计算方法是在sum()中嵌套if(),通过if来获得将type="no_complet...
Mysql
2021-10-28
0
345
题解 | #找到每个人的任务#
用left join连接person表和task表,这样左表person的全部值都保留,右表task对应不上的就显示null select p.id, p.name, t.content from person as p left join task as t on p.id = t.person...
Mysql
2021-10-27
0
358
首页
上一页
1
2
3
4
5
6
7
8
9
10
下一页
末页