Назад к вопросам
Senior
7
Вопрос 9. Написать запрос, который вернет сотрудников, обладающих максимальной зарплатой в своей должности. Скрипт для инициализации: CREATE TABLE users ( fio TEXT NOT NULL, position TEXT, salary BIGINT NOT NULL ); INSERT INTO users(fio, position, salary) VALUES ('Иванов', 'Тестировщик', 100000), ('Горохов', 'Тестировщик', 120000), ('Петров', 'Тестировщик', 140000), ('Сидоров', 'Тестировщик', 100000), ('Кузнецов', 'Тестировщик', 120000), ('Михайлов', 'Тестировщик', 150000), ('Антонов', 'Разработчик', 200000), ('Сухой', 'Разработчик', 100000), ('Микоян', 'Разработчик', 100000), ('Капустин', 'Директор', 300000), ('Астахов', 'ИБ', 200000); Пример результата: Михайлов Тестировщик 150000 Антонов Разработчик 200000 Капустин Директор 300000 Астахов ИБ 200000
Компании, где спрашивали
RT Labs
Ответ от нейросети
sobes.tech AI
Для получения сотрудников с максимальной зарплатой в каждой должности можно использовать оконную функцию RANK() или подзапрос с группировкой. Вот пример запроса с использованием подзапроса:
SELECT u.fio, u.position, u.salary
FROM users u
JOIN (
SELECT position, MAX(salary) AS max_salary
FROM users
GROUP BY position
) max_salaries ON u.position = max_salaries.position AND u.salary = max_salaries.max_salary;
Этот запрос сначала находит максимальную зарплату по каждой должности, а затем выбирает всех сотрудников, у которых зарплата равна максимальной для их должности.
Результат будет:
Михайлов Тестировщик 150000
Антонов Разработчик 200000
Капустин Директор 300000
Астахов ИБ 200000