假设您获得了以下名为Employee的简单数据库表,该表有2列名为Employee ID和Salary:
Employee
Employee ID Salary
3 200
4 800
7 450
Run Code Online (Sandbox Code Playgroud)
我希望写一个查询select max(salary)as max_salary,2nd_max_salary from employee
然后它应该返回
max_salary 2nd_max_salary
800 450
Run Code Online (Sandbox Code Playgroud)
我知道如何找到第二高薪
SELECT MAX(Salary) FROM Employee
WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee )
Run Code Online (Sandbox Code Playgroud)
或者找到第n个
SELECT FROM Employee Emp1 WHERE (N-1) = ( SELECT COUNT(DISTINCT(Emp2.Salary)) FROM Employee Emp2
WHERE Emp2.Salary > Emp1.Salary)
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何将这两个结果加入到期望的结果中
Szy*_*mon 37
您可以运行2个查询作为内部查询以返回2列:
select
(SELECT MAX(Salary) FROM Employee) maxsalary,
(SELECT MAX(Salary) FROM Employee
WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee )) as [2nd_max_salary]
Run Code Online (Sandbox Code Playgroud)
Vig*_*r A 19
试试这样吧
SELECT (select max(Salary) from Employee) as MAXinmum),(max(salary) FROM Employee WHERE salary NOT IN (SELECT max(salary)) FROM Employee);
Run Code Online (Sandbox Code Playgroud)
(要么)
试试这个,n将是你想要返回的第n个项目
SELECT DISTINCT(Salary) FROM table ORDER BY Salary DESC LIMIT n,1
Run Code Online (Sandbox Code Playgroud)
在你的情况下
SELECT DISTINCT(column_name) FROM table_name ORDER BY column_name DESC limit 2,1;
Run Code Online (Sandbox Code Playgroud)
Swa*_*har 11
获取第二个最高工资和第n个工资的最简单方法
select
DISTINCT(salary)
from employee
order by salary desc
limit 1,1
Run Code Online (Sandbox Code Playgroud)
注意:
limit 0,1 - Top max salary
limit 1,1 - Second max salary
limit 2,1 - Third max salary
limit 3,1 - Fourth max salary
Run Code Online (Sandbox Code Playgroud)
小智 10
最佳和最简单的解决方案: -
SELECT
max(salary)
FROM
salary
WHERE
salary < (
SELECT
max(salary)
FROM
salary
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
278676 次 |
| 最近记录: |