问题一 求第二高薪
例如:三条数据,sql查出第二高薪
id ---> salary
1 ---> 10000
2 ---> 20000
3 ---> 30000
思路一 :
1)取记录数据最大值 ----> 30000
2)再取一次数据最大值,但是过滤掉 salary =30000 的记录,此时最大值为第二高薪
SELECT MAX(salary) AS SecondHighestSalary
FROM Employee WHERE salary != (SELECT MAX(salary) FROM Employee)
思路二 :
1)三条数据降序排序
2)取前两条记录
3)跳过第一条记录,此时得到第二高薪
语法简介:
nvl 如果第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。
offset X是跳过X个数据,limit Y是选取Y个数据
limit X,Y 中X表示跳过X个数据,读取Y个数据
SELECT nvl((SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC LIMIT 1 OFFSET 1),
null) as SecondHighestSalary
FROM Employee LIMIT 1