如何从下表中的每个deptno
获得第二高薪?
ID NAME AGE DEPTNO SALARY
-- -------------------- ---------- ---------- ----------
1 shasank 25 11 2025
2 raju 27 12 2027
3 son 33 12 2131
6 bali 31 10 2031
4 rambo 34 11 2345
5 don 32 11 2132
7 dimpu 31 12 2121
8 rahul 28 10 2341
9 janny 28 10 2123
答案 0 :(得分:3)
如果您使用的是支持SQL排名功能的系统,那么DENSE_RANK可能就是您所寻求的。以下是SQL Server 2005或更高版本:
SELECT
* --TODO - pick columns
FROM
(
SELECT *,DENSE_RANK() OVER (PARTITION BY DeptNo ORDER BY Salary DESC) as Rnk
FROM Table
)
WHERE
Rnk = 2
答案 1 :(得分:0)
首先检索前2条记录然后创建该表的别名,然后通过desc
检索记录顺序答案 2 :(得分:0)
试试这个 SELECT TOP 2 FROM'TableName'Limding 1,1 Order by DESC
答案 3 :(得分:0)
尝试此查询
SELECT * FROM( SELECT *,ROW_NUMBER()OVER(ORDER BY Salary DESC)作为行FROM )a WHERE行> 1和行< = 2