SQL17 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary

本文最后更新于:2022年4月9日 中午


题目描述

获取当前(to_date=’9999-01-01’)薪水第二多的员工的emp_no以及其对应的薪水salary

1
2
3
4
5
6
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));

输入描述

输出描述

emp_no salary
10009 94409

题解

1
2
3
4
5
select emp_no, salary from salaries where to_date='9999-01-01' 
and salary=(select salary from salaries group by salary order by salary desc limit 1,1)

select emp_no, salary from salaries where to_date = '9999-01-01'
and salary = (select distinct salary from salaries order by salary desc limit 1,1)

备注:

  1. 需要注意多个人工资可能相同;
  2. 筛选第二多的工资,可以用group bydistinct,但是前者效率要更高。