Wie kann ich das zweithöchste Gehalt aus der Tabelle der Mitarbeiter ermitteln?

Wie würde ich vorgehen, um nach dem zweithöchsten Gehalt aller Mitarbeiter in meiner Tabelle "Mitarbeiter" zu suchen?

Versuchen Sie etwas wie:

SELECT TOP 1 compensation FROM (
  SELECT TOP 2 compensation FROM employees
  ORDER BY compensation DESC
) AS em ORDER BY compensation ASC

Im Wesentlichen:

  • Finde die 2 höchsten Gehälter in absteigender Reihenfolge.
  • Finde von diesen 2 das höchste Gehalt in aufsteigender Reihenfolge.
  • Der ausgewählte Wert ist das zweithöchste Gehalt.

Wenn die Gehälter nicht eindeutig sind, können Sie stattdessen SELECT DISTINCT TOP ... verwenden.

Kommentare (2)

Vielleicht sollten Sie DENSE_RANK verwenden.

SELECT *
FROM (
       SELECT
         [Salary],
         (DENSE_RANK()
         OVER
         (
           ORDER BY [Salary] DESC)) AS rnk
       FROM [Table1]
       GROUP BY [Num]
     ) AS A
WHERE A.rnk = 2
Kommentare (4)

Versuchen Sie dies:

SELECT
    salary,
    employeeid
FROM
    employees
ORDER BY
    salary DESC
LIMIT 2

Dann erhalten Sie nur die zweite Zeile.

Kommentare (1)