200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > [SQL实战]之获取当前薪水第二多的员工的emp_no以及其对应的薪水salary

[SQL实战]之获取当前薪水第二多的员工的emp_no以及其对应的薪水salary

时间:2022-05-24 19:19:57

相关推荐

[SQL实战]之获取当前薪水第二多的员工的emp_no以及其对应的薪水salary

题目描述

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

CREATE TABLEsalaries(

emp_noint(11) NOT NULL,

salaryint(11) NOT NULL,

from_datedate NOT NULL,

to_datedate NOT NULL,

PRIMARY KEY (emp_no,from_date));

解题思路

有两种思路,个人认为第一个思路虽然难理解,但是不会存在bug;第二个思路好理解但是可能有问题。

思路1是先根据to_date条件选出最大的salary,然后去除最大的salary后,在剩下的薪水中选出最大的。

思路2是降序排列数组,然后使用limit偏移一个单位,可是这样默认薪水都不重复。如果最多的薪水有重复的,那么就是错的了。但是这个题目没有重复的。

AC代码

思路1地AC代码

SELECT emp_no, salary FROM salaries WHERE (to_date = '9999-01-01' AND salary IN (SELECT MAX(salary) FROM salaries WHERE (to_date = '9999-01-01' ANDsalary NOT IN (SELECT MAX(salary) FROM salaries WHERE (to_date = '9999-01-01')))))

思路2的AC代码

select emp_no,salary from salaries where to_date = '9999-01-01'order by salary desc limit 1,1;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。