小智 57
试试这个:
SELECT max(salary)
FROM emptable
WHERE salary < (SELECT max(salary)
FROM emptable);
Run Code Online (Sandbox Code Playgroud)
San*_*ara 46
简单回答:
SELECT distinct(sal)
FROM emp
ORDER BY sal DESC
LIMIT 1, 1;
Run Code Online (Sandbox Code Playgroud)
您将只获得第二个最高薪水.
如果你需要任何第3或第4或第N个值,你可以增加第一个值,然后是LIMIT (n-1)
ie.第四薪水:LIMIT 3, 1;
小智 12
大多数其他答案似乎都是数据库特定的.
一般SQL查询应如下所示:
select
sal
from
emp a
where
N = (
select
count(distinct sal)
from
emp b
where
a.sal <= b.sal
)
where
N = any value
Run Code Online (Sandbox Code Playgroud)
此查询应该能够在任何数据库上工作.
Joh*_*lla 11
尝试类似的东西:
SELECT TOP 1 compensation FROM (
SELECT TOP 2 compensation FROM employees
ORDER BY compensation DESC
) AS em ORDER BY compensation ASC
Run Code Online (Sandbox Code Playgroud)
实质上:
如果工资不明显,您可以SELECT DISTINCT TOP ...
改用.
也许你应该使用DENSE_RANK
.
SELECT *
FROM (
SELECT
[Salary],
(DENSE_RANK()
OVER
(
ORDER BY [Salary] DESC)) AS rnk
FROM [Table1]
GROUP BY [Num]
) AS A
WHERE A.rnk = 2
Run Code Online (Sandbox Code Playgroud)
小智 5
要找到员工的第二个最高工资,
SELECT MAX(salary) FROM employee
WHERE salary NOT IN (
SELECT MAX (salary) FROM employee
)
Run Code Online (Sandbox Code Playgroud)
要找到员工的第一和第二最高薪水,
SELECT salary FROM (
SELECT DISTINCT(salary) FROM employee ORDER BY salary DESC
) WHERE rownum<=2
Run Code Online (Sandbox Code Playgroud)
这个查询工作正常,因为我已经使用过
小智 5
select max(Emp_Sal)
from Employee a
where 1 = ( select count(*)
from Employee b
where b.Emp_Sal > a.Emp_Sal)
Run Code Online (Sandbox Code Playgroud)
是跑男.
//选择工资第二高的员工姓名
SELECT name
FROM employee WHERE salary =
(SELECT MIN(salary) FROM
(SELECT TOP (2) salary
FROM employee
ORDER BY salary DESC) )
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
370110 次 |
最近记录: |