SQL今日一题(2)
16lz
2021-01-22
这是SQL今日一题的第二篇文章
题目描述
查找入职员工时间排名倒数第三的员工所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天
所用到的表还是之前的employees表
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL, -- '员工编号'
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
思路
思路1:limit限定
思路2:子查询
答案
# 思路1
select * from employees
order by hire_date desc limit 2,1
1、先order by降序排列
2、再limit限定,昨天说的limit m,n用到了,limit m,n表示从第m+1条数据开始,取n条数据,那么limit2,1就表示从第3条数据开始,取1条数据,这样就取了倒数第3条数据了。
用子查询的思路和上一题是一样的,也是假如hire_date有重复怎么办?如上图所示,如果用思路1取到的是第3条数据,也就是hire_date = 1995-05-23这一条,但实际上它排名倒数第二,所以要用子查询去重。
# 思路2
select * from employees where hire_date =
(select distinct hire_date from employees
order by hire_date desc limit 2,1)
1、先对hire_date去重,然后order by降序limit限定取出真正的倒数第3条数据的hire_date
2、再子查询where子句限定,让hire_date 等于刚取出的倒数第三
distinct 关键字放在列名的前面,表示对某一列去重
更多相关文章
- 如何处理偏态数据?
- 数据分析都有哪些岗位?
- 什么是好的数据指标:精益数据分析
- 在剪贴板上读取/写入数据,太方便了吧!
- 44万条数据揭秘:如何成为网易云音乐评论区的网红段子手?
- 2000万条直播数据,揭秘斗鱼主播生存现状
- 破解X眼电影字体动态加密|凹凸玩数据
- Python爬取上万条大众点评数据,解读一线快餐品牌背后的秘密
- 放大招!耗时一个月,早起做了一个Python数据可视化APP?