SQL今日一题(2)

这是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 关键字放在列名的前面,表示对某一列去重


猜你喜欢:

SQL每日一题

学习SQL:MySQL必知必会

数据分析应关注AARRR模型的哪些指标

泰坦尼克号数据分析

深入浅出数据分析

20000字的深度分析 ,让你彻底搞懂《电信用户流失预测模型》

@ 作者:可乐
@ 公众号/知乎专栏/头条/简书:可乐的数据分析之路
@加个人微信:data_cola,备注:进群,拉你入 可乐的数据分析群 和各行各业的小伙伴交流探讨数据分析相关内容

微信公众号
个人微信号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的可乐!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值