Как я нашел бы вторую по величине зарплату из списка сотрудников? [закрытый]

25
задан Makoto 27 November 2015 в 23:24
поделиться

4 ответа

Может быть, вам следует использовать 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
9
ответ дан 28 November 2019 в 17:33
поделиться

Попробуйте что-то вроде:

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

по сути:

  • Найдите 2 лучших зарплаты в порядке убывания.
  • Из этих 2 найдите верхнюю зарплату в порядке возрастания.
  • Выбранное значение - вторая самая высокая заработная плата.

Если зарплаты не различимы, вы можете использовать Выберите отчетливую вершину ... вместо этого.

11
ответ дан 28 November 2019 в 17:33
поделиться

Попробуйте следующее:

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

Тогда просто возьмите вторую строку.

4
ответ дан 28 November 2019 в 17:33
поделиться

Попробуйте следующее:

SELECT max(salary)
FROM emptable
WHERE salary < (SELECT max(salary)
                FROM emptable);
57
ответ дан 28 November 2019 в 17:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: