Отсюда хоть три года скачи, ни до какого государства не доскачешь (Н.В. Гоголь).

Как найти вторую самую высокую или максимальную зарплату работника в SQL

FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Загрузка...
19 января 2017
Как найти вторую самую высокую или максимальную зарплату работника в SQL
Как найти вторую по величине или вторую максимальную заработную плату работника, является одним из наиболее часто задаваемых вопросов про SQL аналогично поиску повторяющихся записей в таблице и когда использовать усечение против удаления . Здесь много способов найти вторую самую высокую зарплату, основанные на базе данных, которую вы используете, другие базы данных содержит другую функцию, которая может быть использована для поиска второй максимальной или N-ную максимальной зарплаты работника. Ну, этот вопрос также может быть обобщен с другим сценарием, как нахождение второго максимального возраста и т.д. На этом уроке SQL мы увидим другой пример из запроса на выборку SQL, чтобы найти вторую самую высокую зарплату независимо от баз данных или вы можете использовать в ANSI SQL и других запросов SQL, которые использует базу данных со специфической особенностью, чтобы найти вторую максимальную зарплату.

SQL-запрос, чтобы найти вторую максимальную зарплату работника

В этом разделе мы будем писать SQL запрос, чтобы получить вторую самую высокую зарплату работника. Перед тем как написать запрос его хорошо, мы должны быть знакомы со схемой, а также данных в таблице. Вот таблица Employee мы будем использовать этот SQL пример:

mysql> SELECT * FROM Employee;
+--------+----------+---------+--------+
| emp_id | emp_name | dept_id | salary |
+--------+----------+---------+--------+
| 1      | Роман    | 10      |   2000 |
| 2      | Макс     | 10      |   4000 |
| 3      | Антон    | 11      |   6000 |
| 4      | Tom      | 11      |   8000 |
+--------+----------+---------+--------+
4 rows IN SET (0.00 sec)

 

Если посмотреть данные, вы увидите, что второй максимум заработной платы в этом случае составляет 6000 и имя сотрудника Антон. Теперь давайте посмотрим SQL пример, чтобы выяснить эту вторую максимальную зарплату.

Во-вторых максимальная заработная плата с использованием подзапроса и IN

Подзапросы в SQL являются отличным инструментом для такого рода сценария, здесь мы сначала выбbhtv максимальную зарплату, а затем еще один максимум за исключением результата подзапроса. Чтобы узнать больше о подчиненном запросе см коррелируют и не коррелируют подзапросы в SQL

mysql> SELECT max(salary) FROM Employee WHERE salary NOT IN (SELECT max(salary) FROM Employee);
+-------------+
| max(salary) |
+-------------+
|        6000 |
+-------------+
1 row IN SET (0.00 sec)

 

Вот другой SQL-запрос, чтобы найти вторую самую высокую зарплату, используя подзапрос и оператор вместо IN:

mysql> SELECT max(salary) FROM Employee WHERE salary < (SELECT max(salary) FROM Employee);
+-------------+
| max(salary) |
+-------------+
|        6000 |
+-------------+
1 row IN SET (0.00 sec)

 

Оба примера SQL будут работать на всей базе данных, включая Oracle, MySQL, Sybase и SQL Server, они написаны с использованием стандартных ключевых слов SQL. Но когда-нибудь вы также можете использовать в базе данных конкретные функции, такие как ключевое слово TOP в SQL Server или базы данных Sybase, чтобы выяснить, вторую самую высокую зарплату работника.

Вторая самая высокая заработная плата, используя ключевое слово TOP в Sybase или в базе данных SQL Server

Ключевое слово TOP в базе данных Sybase и SQL Server используется для выбора верхней записи или строку любого результирующего набора, осторожно используя ключевое слово TOP вы можете узнать второй максимум или N-ную максимальную зарплату, как показано ниже.

SELECT TOP 1 salary FROM ( SELECT TOP 2 salary FROM employees ORDER BY salary DESC) AS emp ORDER BY salary ASC

 

Вот что делает этот запрос : сначала выяснит, топ 2 зарплату в таблицеEmployee и перечислит их в порядке убывания, сейчас вторая по величине зарплата работника на вершине принимает это значение. Хотя вы должны иметь в виду использования отчетливого ключевого слова, если есть более чем один работник с высокой зарплатой, то в таком случае зарплата будет повторяться и TOP 2 может перечислить такую же зарплату повторно.

Вторая максимальная заработная плата с использованием ключевого слова LIMIT в базе данных MYSQL

Ключевое слово LIMIT в базе данных MySQL является немного похожа на ключевое слово TOP в базе данных SQL Server и позволяет принимать только определенные строки из результирующего набора. Если вы посмотрите на пример SQL ниже, то он очень похож на пример SQL Server с ключевым словом TOP.

mysql> SELECT salary  FROM (SELECT salary FROM Employee ORDER BY salary DESC LIMIT 2) AS emp ORDER BY salary LIMIT 1;
+--------+
| salary |
+--------+
|   6000 |
+--------+
1 row IN SET (0.00 sec)

 

Это о том, как найти вторую самую высокую зарплату работника с помощью SQL запроса. Это хороший вопрос, который на самом деле проверит ваши SQL знания, он не сложный, но определенно сложно для начинающих. Как вы решили этот вопрос нахождения третьей максимальной зарплаты или N-ой максимальной зарплаты, укажите в комментариях?

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Просмотров: 392

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

    Добавить комментарий

    Войти с помощью: 

    Ваш e-mail не будет опубликован. Обязательные поля помечены *

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам:

    Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

    badge
    Обратный звонок 1
    Отправить
    galka

    Спасибо! Ваша заявка принята

    close
    galka

    Спасибо! Ваша заявка принята

    close