Как я могу запросить вторую по величине зарплату у всех сотрудников в таблице Employee?
Попробуйте что-нибудь вроде:
SELECT TOP 1 compensation FROM (
SELECT TOP 2 compensation FROM employees
ORDER BY compensation DESC
) AS em ORDER BY compensation ASC
По сути:
Если зарплаты не различаются, вместо этого можно использовать SELECT DISTINCT TOP ...
.
Возможно, вам следует использовать DENSE_RANK
.
SELECT *
FROM (
SELECT
[Salary],
(DENSE_RANK()
OVER
(
ORDER BY [Salary] DESC)) AS rnk
FROM [Table1]
GROUP BY [Num]
) AS A
WHERE A.rnk = 2
Попробуйте это:
SELECT
salary,
employeeid
FROM
employees
ORDER BY
salary DESC
LIMIT 2
Затем просто получите второй ряд.