获得每个deptno的第二高薪

时间:2011-07-21 06:08:20

标签: sql

如何从下表中的每个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

4 个答案:

答案 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

SQL Server documentation on DENSE_RANK

答案 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