【发布时间】:2014-02-26 12:10:02
【问题描述】:
假设您有一个名为 Employee 的简单数据库表,它有 2 列名为 Employee ID 和 Salary:
Employee
Employee ID Salary
3 200
4 800
7 450
我想写一个查询 select max(salary) as max_salary, 2nd_max_salary from employee
那么它应该返回
max_salary 2nd_max_salary
800 450
我知道如何找到第二高的薪水
SELECT MAX(Salary) FROM Employee
WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee )
或者找到第n个
SELECT FROM Employee Emp1 WHERE (N-1) = ( SELECT COUNT(DISTINCT(Emp2.Salary)) FROM Employee Emp2
WHERE Emp2.Salary > Emp1.Salary)
但我无法弄清楚如何将这 2 个结果加入到所需的结果中
【问题讨论】:
-
显而易见的后续问题是,如果该样本数据中有第 4 行的薪水为 800……您想要的结果是什么?应该是
800,800,因为这是你最高的两个薪水?还是应该是800,450,因为这是你的两个最高独特薪水? -
上面给出了第二大的值,假设如果我在第二大有多个值,满足上述要求的查询修改将是什么