牛客875626703号
牛客875626703号
全部文章
题解
归档
标签
去牛客网
登录
/
注册
牛客875626703号的博客
全部文章
/ 题解
(共7篇)
题解 | #某宝店铺连续2天及以上购物的用户及其对应的天数#
select m.d1 user_id,count(distinct(m.s1)) days_count from ( SELECT user_id d1,sales_date s1,sales_date-dense_rank() over(partition by user_id order by...
Mysql
2022-02-09
0
197
题解 | #牛客每个人最近的登录日期(六)#
这道题的关键在于利用sum() over()函数求出分组的累计求和值。按照name分组,按照date累计求和。其次,对于登录但是未做题的人不显示0记录,因此需要将passing表作为主表。 SELECT u.name u_n,l.date DATE, IFNULL(SUM(p_n.number) o...
2021-08-01
0
257
题解 | #牛客每个人最近的登录日期(五)#
献上一个超级笨的办法,硬写写出来。。。。。。留存表里面用的是 现在日期 初次登陆日期 初次登陆日期+1day如果现在日期 = 初次登陆日期+1day 那么 现在日期-1day就是初次日期。以现在日期为groupby对象统计“初次登陆日期+1day”的数量。此数量就是现在日期-1day的 新增用户留存...
2021-07-31
0
223
题解 | #牛客每个人最近的登录日期(三)#
这道题的关键在于建立一个包含+1day信息的新表,并与原表关联 关联条件为user_id和日期一致。这里有个关键点是用户可能存在重复登陆的情况,而题目只是想要找到次日留存 而不是多日留存,因此关联的结果的user_id需要进行去重来统计数量作为分子。同理,分母也需要去重。SELECTROUND((S...
2021-07-30
0
315
题解 | #对于employees表中,给出奇数行的first_name#
注意这里是说结果不需要排序,如果使用了row_number()或者rank()的话是会自动进行排序的。因此,需要重新建立一张原本序列的表进行关联。注意本题的内部逻辑SELECT a.f_n first_nameFROM(SELECT e1.first_name f_n, e3.r1 rFROM em...
2021-07-30
0
239
题解 | #查找在职员工自入职以来的薪水涨幅情况#
没理解到在职的定义,看结果说明发现结果多了其实就两点:1、找到salaries表中to_date是9999-01-01的数据行,不仅意味着在职还能选择最后时刻的工资2、找到salaries表中to_date与employees表中hire_date相同的行,选择入职工资3、相减select av1....
2021-07-24
0
267
题解 | #获取每个部门中当前员工薪水最高的相关信息#
大家来看看标准的~1、salaries和dept_no表内连接,按照emp_no分组,并求出分组后每个emp_no的最后工资截至日期即max(d.to_date),建立由“员工”以及“该员工最后工资截止日期”两列组成的新表new_s2、salaries和dept_no表内连接,再与新表new_s连接...
2021-07-24
1
402