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:
Wenn die Gehälter nicht eindeutig sind, können Sie stattdessen SELECT DISTINCT TOP ...
verwenden.
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
Versuchen Sie dies:
SELECT
salary,
employeeid
FROM
employees
ORDER BY
salary DESC
LIMIT 2
Dann erhalten Sie nur die zweite Zeile.