qstalking
qstalking
全部文章
分类
题解(14)
归档
标签
去牛客网
登录
/
注册
qstalking的博客
全部文章
(共14篇)
【结合数据表和输出结果进行审题】
#部门(时间限制)--员工当前薪水最高 #d001部门有3名员工,薪水表符合时间限制的有两条记录,分别来自2名员工,而输出结果只有一条。 #所以题目中的薪水最高是针对部门而不是某个员工 select d.dept_no &nb...
审题
2021-01-26
2
553
【妙解】查询每组中位数位置上的记录
#中位数本身就是先按自然数排名,再取数。排序函数选用row_number 方法一(妙解) 用一条规则统一奇数个数时和偶数个数时的中位数位置。无论奇偶,中位数的位置距离(个数+1)/2 小于1,不信你随便写个试试。 select id,job,score,s_rank fr...
排序函数
中位数
妙解
2021-01-26
127
5501
关于中位数的特征
#中位数的特征: #当个数为偶数时,中位数的起始位置等于个数/2,结束位置等于个数/2+1 #当个数为奇数时,中位数的起始位置等于向上取整(个数/2),结束位置等于向上取整(个数/2) #用除以2的余数是否为0来判断奇偶,%2=0 #记得取整数,本题用ceiling函数向上取整(返回不小于该数的...
中位数
SQl
2021-01-26
42
2645
筛选出组内排名前2的记录
#从输出结果来看,需考虑并列第一的情况,并且依然存在第二名。确定排序函数为dense_rank #整体思路: #1.创建一个中间表,包含需要输出的除了name以外的字段以及分数的组内排名; #2.关联语言表查语言名称 #3.用where筛出组内排名等于1或2的记录 #4.各种排序。 sele...
排序函数
组内比较
2021-01-26
16
861
从一个表中查询大于(分组后平均值)的记录
#整体思路:建一个中间表,包含要查询的所有字段以及需要比较的平均值。然后要什么取什么。 select t1.id ,t1.job ...
窗口函数
组内与平均值比较
2021-01-26
4
697
统计每人每个刷题日期的累计刷题通过数
#明确问题: #登录不一定刷题,刷题不一定通过。刷题了就会存在刷题表里。 #三张表:登录表、刷题表、用户表。 #因为有登录没有刷题的数据不需要输出,所以截止到某天指的是刷题表有记录的日期。没有用到登录表。 #用窗口函数按姓名分区按日期排序计算累计数。 select u.name&n...
窗口函数
2021-01-26
54
3195
统计每个日期新用户的次日留存率
#明确问题:12号的新用户次留是指在12号是第一次登录,并且在13号也登录了。 #分母:当前日期新用户的特征是 当前日期=该用户所有登录日期的最小值 #分子:当前日期作为前一天有该用户的登录记录 并且是第一次登录。(代码中的-1是把某个用户在整张login表的日期-1,12号作为前一天有这个人,...
登录问题
次日留存率
SQl
2021-01-26
118
5835
统计每个日期登录新用户个数
#明确问题:登录的当前日期=该用户所有登录日期的最小值 select date ,count(distinct case when (user_id,date) in (select user_id,min...
登录问题
SQl
2021-01-26
175
4725
计算次日留存率
#第一次登录时间 min(date) 后一天 date_add(min(date),interval 1 day) #分母是表里的去重总用户数,分子是(用户id,date)满足次日留存的条件。 select round(t1.c1/count(distinct l.use...
次日留存率
SQl
2021-01-26
7
978
where(多个字段)in(子查询)
#不同日期会对应不同的设备。 #本题中用户ID和日期可以确定唯一记录,所以多表关联+where过滤(用户ID,日期) select u.name as u_n ,c....
SQl
2021-01-25
3
1594
首页
上一页
1
2
下一页
末页