SQL17获取当前薪水第二多的员工的emp

it2024-06-30  42

题目描述

获取当前(to_date='9999-01-01')薪水第二多的员工的emp_no以及其对应的薪水salary 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_nosalary1000994409 SELECT S.emp_no,S.salary FROM salaries S WHERE S.salary=( SELECT DISTINCT S.salary FROM salaries S WHERE S.to_date = '9999-01-01' GROUP BY S.salary DESC LIMIT 1 OFFSET 1 ); --法2:row_number开窗函数(当薪水第二的人有多个时只会输出一个) select emp_no,salary from (select emp_no,salary,row_number() over(order by salary desc) t from salaries where to_date='9999-01-01') where t=2 --法3:rank开窗函数(当薪水第二的人有多个时会全部输出) select emp_no,salary from (select emp_no,salary,rank() over(order by salary desc) t from salaries where to_date='9999-01-01') where t=2 --法4:max()+子查询 select emp_no,max(salary) from salaries where salary <>(select max(salary) from salaries where to_date='9999-01-01')

 

最新回复(0)