bab*_*ney 37
试试这个,n将是你想要返回的第n个项目
SELECT DISTINCT(Salary) FROM table ORDER BY Salary DESC LIMIT n,1
Run Code Online (Sandbox Code Playgroud)
小智 19
如果你想从表中找到第n个薪水(这里的n应该是第1或第2或第15个最高工资)
这是查找第n个薪水的查询:
SELECT DISTINCT Salary FROM tblemployee ORDER BY Salary DESC LIMIT 1 OFFSET (n-1)
Run Code Online (Sandbox Code Playgroud)
如果你想找到第8个最高薪水,查询应该是:
SELECT DISTINCT Salary FROM tblemployee ORDER BY Salary DESC LIMIT 1 OFFSET 7
Run Code Online (Sandbox Code Playgroud)
注意: OFFSET从第0位开始,因此在此处使用N-1规则
Ome*_*esh 13
要获得第n个最高薪水,您需要首先使用数据排序数据ORDER BY,然后使用LIMITwith 选择第n个最高记录OFFSET.
SELECT DISTINCT(salary) AS salary
FROM tbl_salary
ORDER BY salary DESC
LIMIT 1 OFFSET (n - 1);
Run Code Online (Sandbox Code Playgroud)
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)
对于外部查询处理的每条记录,将执行内部查询,并将返回记录的工资少于当前工资的记录数.如果您正在寻找第二高薪,那么只要内部查询返回N-1,您的查询就会停止.
寻找最高薪水
select MAX(Salary) from Employee;
Run Code Online (Sandbox Code Playgroud)
找到第二高的工资
查询 1
SELECT MAX(Salary) FROM Employee
WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee);
Run Code Online (Sandbox Code Playgroud)
查询 2
select MAX(Salary) from Employee
WHERE Salary <> (select MAX(Salary) from Employee )
Run Code Online (Sandbox Code Playgroud)
找到第 n 个最高工资
查询 1
SELECT * /*This is the outer query part */
FROM Employee Emp1
WHERE (N-1) = ( /* Subquery starts here */
SELECT COUNT(DISTINCT(Emp2.Salary))
FROM Employee Emp2
WHERE Emp2.Salary > Emp1.Salary)
Run Code Online (Sandbox Code Playgroud)
查询 2
SELECT *
FROM Employee Emp1
WHERE (1) = (
SELECT COUNT(DISTINCT(Emp2.Salary))
FROM Employee Emp2
WHERE Emp2.Salary > Emp1.Salary)
Run Code Online (Sandbox Code Playgroud)
在 SQL Server 中使用 TOP 关键字的第 n 高薪水
SELECT TOP 1 Salary
FROM (
SELECT DISTINCT TOP N Salary
FROM Employee
ORDER BY Salary DESC
) AS Emp
ORDER BY Salary
Run Code Online (Sandbox Code Playgroud)
在 MySQL 中查找第 n 个最高薪水
SELECT Salary FROM Employee
ORDER BY Salary DESC LIMIT n-1,1
Run Code Online (Sandbox Code Playgroud)
在 SQL Server 中查找第 n 个最高薪水
SELECT Salary FROM Employee
ORDER BY Salary DESC OFFSET N-1 ROW(S)
FETCH FIRST ROW ONLY
Run Code Online (Sandbox Code Playgroud)
使用 rownum 在 Oracle 中查找第 n 个最高薪水
select * from (
select Emp.*,
row_number() over (order by Salary DESC) rownumb
from Employee Emp
)
where rownumb = n; /*n is nth highest salary*/
Run Code Online (Sandbox Code Playgroud)
使用 RANK 在 Oracle 中查找第 n 个最高薪水
select * FROM (
select EmployeeID, Salary
,rank() over (order by Salary DESC) ranking
from Employee
)
WHERE ranking = N;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
111143 次 |
| 最近记录: |