Ding_123
Ding_123
全部文章
题解
归档
标签
去牛客网
登录
/
注册
Ding
全部文章
/ 题解
(共84篇)
题解 | #异常的邮件概率#
知识点 首先需要排除所有异常用户,因此内连接两个表筛选条件为is_blacklist = 0,按照日期进行分组 概率结果显示三位小数,使用round(计算概率,3) 概率计算使用case when,completed是0否则为1进行奇数求和,除以计数type出现次数 代码 select date...
Mysql
2021-12-06
1
386
题解 | #找到每个人的任务#
知识点 本题使用左连接不是所有人都有任务,没有任务的显示为null 连接条件为person表中的id和task表里的person_id,排序不用写也没事因为表原本就是按照id升序排序的 代码 select p.id, p.name, t.content from person as p left...
Mysql
2021-12-06
3
597
题解 | #刷题通过的题目排名#
知识点 直接使用窗口函数dense_rank按照number大小降序排列进行排名,最后排序就按照排名进行排序 RANK并列跳跃排名,并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,跳跃到总共的排名。 DENSE_RANK并列连续排序,并列即相同的值,相同的值保留重复名次,遇到下一个不同...
Mysql
2021-12-06
1
356
题解 | #出现三次以上相同积分的情况#
知识点 使用group by进行分组,筛选条件就是计数number出现次数大于等于3次 代码 select number from grade group by number having count(number) >= 3
Mysql
2021-12-06
1
452
题解 | #给出employees表中排名为奇数行的first_name#
知识点 该题的意思是先按照first_name升序排序,然后取序号为奇数的行,最后输出的结果要按照原表的顺序 因此使用窗口函数排序内连接到原表里面,选择序号为奇数的就行 代码 select e.first_name from employees as e join ( select fi...
Mysql
2021-12-06
2
446
题解 | #统计salary的累计和running_total#
知识点 本题有两种写法一种直接使用窗口函数,一种使用子查询 函数名(column) over(选项),所有聚合函数都可以作为窗口函数 子查询就是sum使用的表员工编号小于等于外层表员工编号 代码 窗口函数 select emp_no, salary, sum(salary) over (ord...
Mysql
2021-12-06
4
524
题解 | #获取有奖金的员工相关信息。#
知识点 case [col_name] when [value1] then [result1]…else [default] end: 枚举这个字段所有可能的值 内连接三个表。筛选条件是现在的薪水to_date = '9999-01-01' 代码 select e.emp_no, e.firs...
Mysql
2021-12-06
2
520
题解 | #使用含有关键字exists查找未分配具体部门的员工的所有信息。#
知识点 1exists用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False。exists 指定一个子查询,检测行的存在。 在employees表中挑选出令(select emp_no from dept_emp de where de.emp_no ...
Mysql
2021-12-05
0
433
题解 | #分页查询employees表,每5行一页,返回第2页的数据#
知识点 imit y offset x limit 5 offset 5; 取5条记录,偏移量为5 limit x,y; x:偏移量 y:要获取的个数 limit 5,5; 偏移量为5,取5条记录 若每页显示n条记录,要显示第i页数据,则可以用 limit n...
Mysql
2021-12-05
1
371
题解 | #平均工资#
知识点 排除在职的最大值和最小值就是salary大于最小值和salary小于最大值 where后面不能跟聚合函数,所以需要建立一个子查询 代码 select avg(salary) as avg_salary from salaries where to_date = '9999-01-01'...
Mysql
2021-12-03
5
431
首页
上一页
1
2
3
4
5
6
7
8
9
下一页
末页