SQL‑запросы для поиска сотрудника с максимальной зарплатой и выбора отделов с высокой средней оплатой

Максимальную зарплату найдите подзапросом MAX, связав сотрудника с отделом. Для средней зарплаты сгруппируйте сотрудников по отделу и используйте HAVING.

Короткий ответ

Что ответить на собеседовании

Максимальную зарплату найдите подзапросом MAX, связав сотрудника с отделом. Для средней зарплаты сгруппируйте сотрудников по отделу и используйте HAVING.

Подробный разбор

Ответ с пояснениями

Условие

В базе данных задана следующая схема:

// Table Departments
create table D (
    Id int primary key,
    Name nvarchar(100)
)

// Table Employees
create table E (
    Id int primary key,
    DepartmentId int foreign key references Departments(Id),
    Name nvarchar(100),
    Salary float
)

Требуется выполнить два запроса:

  1. Вывести имя сотрудника, получающего наибольшую зарплату в компании, вместе с названием его отдела.
  2. Сформировать список отделов, в которых средняя заработная плата превышает 1000 $.

Оба запроса должны использовать только стандартные возможности SQL (JOIN, агрегатные функции, ORDER BY, LIMIT/TOP и т.п.).

Ответ

Максимальную зарплату найдите подзапросом MAX, связав сотрудника с отделом. Для средней зарплаты сгруппируйте сотрудников по отделу и используйте HAVING.

SELECT e.Name, d.Name AS Department
FROM E e JOIN D d ON d.Id = e.DepartmentId
WHERE e.Salary = (SELECT MAX(Salary) FROM E);

SELECT d.Id, d.Name, AVG(e.Salary) AS AverageSalary
FROM D d JOIN E e ON e.DepartmentId = d.Id
GROUP BY d.Id, d.Name
HAVING AVG(e.Salary) > 1000;

Первый запрос возвращает всех сотрудников с максимальной зарплатой, включая равные значения. В DDL необходимо заменить ссылку Departments(Id) на D(Id), а комментарии // — на SQL-комментарии --. Для денежных сумм предпочтительнее DECIMAL с согласованной точностью, а не приближённый float.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее