要学curiosity63
要学curiosity63
全部文章
分类
题解(11)
归档
标签
去牛客网
登录
/
注册
要学curiosity63的博客
全部文章
(共11篇)
题解 | #最差是第几名(二)#
查询中位数所在位置,其实就是查中位数落在哪一区间,区间即有范围在第一步sum()over得出每一等级的累加人数即为该等级对应的最大值m再利用窗口lag()over()构建出该等级对应的小值n总人数/2落在哪个区间,哪个区间对应的等级即为中位数所在
2021-07-22
0
357
题解 | #牛客的课程订单分析(七)#
结合订单分析(六)已计算出用户id,是否是拼单,对应的符合条件的总订单数cnt 及对应客户端的名称第二部,因为拼单的话客户端名字为NULL 故使用case when 对不是拼单的类别重新命名,再根据其计数即可 SELECTcase when c.client_name is NULL then 'G...
2021-07-21
0
485
题解 | #牛客的课程订单分析(六)#
在牛客的课程订单分析(四)的基础上左连接即可 SELECTa.id,a.is_group_buy,b.name client_nameFROM(SELECT*,ROW_NUMBER() over(partition by user_id order by date) r,count(product_...
2021-07-21
0
347
题解 | #牛客的课程订单分析(五)#
窗口函数分别给出成功购买的次序r 以及总次数cnt。题目需要的是user_id 第一次和第二次购买的日期 及cnt故r<=2中 min(date)为第一次 max(date)为第二次 SELECTa.user_id,min(a.date) first_buy_date,max(a.date) ...
2021-07-21
0
338
题解 | #牛客的课程订单分析(四)#
窗口函数row_number()按user_id分组日期升序给出序号r count()over()计算出符合条件的总购买次数cnt最后条件删选cnt>=2且r=1的即为购买条件课程成功超过3次 且第一次购买的行 SELECTa.user_id,a.date first_buy_da...
2021-07-21
1
436
题解 | #牛客的课程订单分析(三)#
利用窗口函数count()统计出符合条件的总数, 再进行条件删选r>=2 排序后得到答案 SELECTa.id,a.user_id,a.product_name,a.status,a.client_id,a.dateFROM(SELECT*,count(product_name) over(p...
2021-07-21
0
372
题解 | #考试分数(五)#
SELECTa.id,a.job,a.score,a.t_rankfrom(SELECT*,row_number() over(partition by job order by score desc) t_rank,count(id) over(partition by job) num #对工作...
row_number()
2021-07-21
0
408
题解 | #牛客每个人最近的登录日期(五)#
问题:每日新用户的次日留存率。解题思路:1、利用开窗函数row_number() 当r=1时即该行用户为当日新用户;函数lag()将日期上移,得到l_date,当date-l_date的差为-1时,说明l_date是date的次日,这里要的只是次日即第二次登陆,所以同时r=2即可得出l_date对应...
开窗函数row_number
lag()
join
2021-07-21
0
543
题解 | #牛客每个人最近的登录日期(四)#
select distinct b.date, count(a.user_id) new from (select distinct date from login)b left join ...
2021-07-20
0
377
题解 | #牛客每个人最近的登录日期(四)#
方法1 使用窗口函数按user_id分组按日期升序排序得到登陆次数r, 之后使用case when()将r=1相加。直接用计数导致r≠1的日期缺失 SELECTb.date,sum(case when b.r=1 then 1 else 0 end) newfrom(SELECT a.*, ROW_...
2021-07-20
0
382
首页
上一页
1
2
下一页
末页