Fatufo
Fatufo
全部文章
题解
归档
标签
去牛客网
登录
/
注册
Fatufo的博客
全部文章
/ 题解
(共9篇)
题解 | #牛客每个人最近的登录日期(五)#
开窗函数解法 思路: 1、增加用户第二次登录日期和登录日期表序号; 2、求当前日期新客和旧客,旧客日期比新客日期大一天既是次日登录客户数,但是旧客数是按照旧客日期求的; 3、次日留存率 = 后一天的旧客数 / 当前日期的新客数。 用到的函数:rank ,lag ,case ,date_add ,ro...
Mysql
开窗函数
ifnull
date_add
2022-01-15
0
254
题解 | #牛客每个人最近的登录日期(四)#
采用子查询嵌套(效率低,好理解,要效率的话看别的哈) 思路:先分组找每个人最早登录的日期,此时为每个人和其首次登录日期表,然后按日期分组统计新客户数(已经完活了),最后按照日期排序显示,牛客要显示所有日期(甲方需求),采用ifnull函数输出0值。 select l1.date ,ifnull(r...
Mysql
子查询
2022-01-15
0
208
题解 | #牛客每个人最近的登录日期(三)#
联合查询 思路:当期登入用户与时间段后用户联合查询,找出都登入的用户,然后除以总用户数 1、建一个自增一天的用户表,date_add(date, interval 1 day),题解也有用自连接的; 2、对当天登入和几天后还有登入的用户去重计数; 3、总用户数,COUNT( DISTINCT lg....
Mysql
date_add
distinct
2022-01-14
0
232
题解 | #异常的邮件概率#
采用简单的in判断是否正常邮件,效率不怎么好 思路: 1、找出正常邮件,id 不是 is_blacklist id; 2、正常且失败邮件,type = 'no_completed'; 3、保留3位小数,round函数; 4、按照日期分组,group by date。 select e.date ...
Mysql
in
round
group by
2022-01-12
0
231
题解 | #获取有奖金的员工相关信息。#
左连接生成奖金表,然后筛选出有奖金的员工 1、左连接生成奖金表,left join; 2、筛选出有奖金的员工,btype > 0 ,注意有默认值,btype 是none 值不是null值。 select e.emp_no ,e.first_name ,e.last_name ,b.btype...
Mysql
left join
round
2022-01-12
0
190
题解 | #汇总各个部门当前员工的title类型的分配数目#
MySQL多表连接,分组求和,排列 select dept_no ,dept_name ,title ,count(emp_no) from ( select -- 当前员工信息表(编号、部门编号、部门名称、职位) dep.emp_no ,dep.dept_no ...
Mysql
2021-12-29
0
299
题解 | #获取当前薪水第二多的员工的emp_no以及其对应的薪水salary#
思路:当前工资 - 第一次发的工资(入职工资)= 成长工资 1、子查询生成当前工资表 to_date = '9999-01-01',第一次工资表 to_date = 最小日期; 2、当前工资表与第一次工资表左连接,left join; 3、成长工资growth = 当前工资 - 第一次工资 ; 4、...
Mysql
子查询
left join
order by
2021-12-26
0
202
题解 | #获取每个部门中当前员工薪水最高的相关信息#
思路:倒推法 结果:每个部门中当前员工薪水最高的相关信息 = 员工信息 加 薪水及部门在 部门最高薪水表 内; 倒推1:部门最高薪水表 = 含部门的薪水表 按照 部门 分组求最大薪水; 倒推2:含部门的薪水表 = 员工信息表 和 薪水表 多条件查询(由于日期都是一天,就没有考虑 “当前”,若是多月薪...
Mysql
子查询
2021-12-26
1
286
题解 | #查找所有已经分配部门的员工的last_name和first_name以及dept_no#
标题 已经分配部门员工 = 在部门表内的员工,然后找员工Id对应的姓名 思路1:左连接匹配名称 e.last_name ,e.first_name ,d.dept_no from dept_emp d -- 部门表为主表 left join employees e on d.emp_no = e.e...
Mysql
2021-12-26
1
199