Ding_123
Ding_123
全部文章
题解
归档
标签
去牛客网
登录
/
注册
Ding
全部文章
/ 题解
(共84篇)
题解 | #考试分数(四)#
知识点 首先按照岗位进行分组 然后进行计数,奇数如3除以2四舍五入就是2,3加1除以2也是2符合。偶数如4中位数就是2到3之间,按之前方法计算也符合 代码 select g.job, round(count(g.id)/2) as start, round((count(g.id)+1)/2...
Mysql
2021-12-08
1
271
题解 | #考试分数(三)#
知识点 使用窗口函数建立一个新表,题目要求的排名前2是分数排名所以使用dense_rank 内连接一下语言岗位表,name正序score降序排序 代码 select g1.id, name, score from ( select *, dense_rank() over(parti...
Mysql
2021-12-08
1
300
题解 | #考试分数(二)#
知识点 建立一个新表加上一列各岗位平均值,使用窗口函数,筛选条件就是score大于平均分 代码 select id, job, score from( select *, avg(score) over(partition by job) as avs from grade)...
Mysql
2021-12-08
1
349
题解 | #考试分数(一)#
知识点 1.按照job进行分组,计算平均值avg,round取三位小数,最后按照avg降序排序 代码 select job, round(avg(score),3) as avg from grade group by job order by avg desc
Mysql
2021-12-08
1
409
题解 | #牛客每个人最近的登录日期(六)#
知识点 本题login表没什么用直接使用passing_number和user 使用窗口函数先按照用户分组再按照日期进行排序求和就是通过题总数 题目最后输出的是每个人每天通过题目,一开始还以为是每个人最终通过多少题注意一下和那天的日期 代码 select name as u_n, date, ...
Mysql
2021-12-07
3
339
题解 | #牛客每个人最近的登录日期(五)#
知识点 根据题目想要的表格的形状首先按照日期排列,知道每个日期有哪些新用户,然后第二天该用户登录信息没有也要出现null值因此该题使用左连接 第一步日期排列代码如下 select date from login group by date 该日期有哪些新用户代码如下,即使出现同一人当...
Mysql
2021-12-07
2
312
题解 | #牛客每个人最近的登录日期(四)#
知识点 建立窗口函数排序作为一个新表,然后按照日期进行分组。因为有可能同一人在一天内用不同设备多次登录的情况,所以排序使用row——number只会出现一个1 一开始想的是计数count,但是当天没有新用户会直接没有记录,所以使用case when然后使用sum进行计数 需要注意的小细节就是每一个...
Mysql
2021-12-07
3
410
题解 | #牛客每个人最近的登录日期(三)#
知识点 四舍五入三位小数round(留存率,3) 判断新用户就是登陆日期最小,第二天留存就是最小登陆日期加1也存在记录 用where(用户id, 日期) in进行筛选,把原表按照用户id进行分组最小日期+1存在的符合要求。除以总的用户数量就是留存率 date_add(date,interval e...
Mysql
2021-12-07
1
347
题解 | #牛客每个人最近的登录日期(二)#
知识点 主要思路就是先按照用户进行分组,日期最大为筛选条件 使用where(用户id, 日期) in新表进行筛选,新表进行分组选日期最大 使用窗口函数直接建立新表,按照用户分组把日期进行排序,排序=1就是所求 代码 1.where() in进行筛选 select u.name as u_n, ...
Mysql
2021-12-07
2
448
题解 | #牛客每个人最近的登录日期(一)#
知识点 先按照id进行分组,日期最大的就是最近登录 还可以使用窗口函数first_value,取首行记录值,因此窗口函数中使用id分区然后date降序排序第一行就是最近登录日期 代码 select user_id, max(l.date) as d from login as l group b...
Mysql
2021-12-06
6
557
首页
上一页
1
2
3
4
5
6
7
8
9
下一页
末页