Даны две таблицы базы данных. Employees (id, name, dept_id, salary): (1, Айдар, 1, 300); (2, Мария, 1, 250); (3, Серик, 2, 200); (4, Алия, 2, 400); (5, Данияр, 2, 150); (6, Ольга, 1, 350); (7, Берик, 3, 180); (8, Жанар, 2, 240); (9, Тимур, 3, 170). Departments (dept_id, title): (1, Продажи); (2, IT); (3, Склад). Что вернёт запрос (порядок строк не важен): SELECT title, AVG(salary) FROM Employees INNER JOIN Departments ON Employees.dept_id = Departments.dept_id WHERE salary >= 180 GROUP BY title HAVING COUNT(*) >= 3;
Показать ответ и разборСкрыть ответ и разбор
Верный ответ
- BПродажи 300; IT 280
Разбор
1) INNER JOIN связывает сотрудников с отделами по dept_id. 2) WHERE выполняется до группировки и оставляет только строки с salary >= 180: Айдар 300, Мария 250, Ольга 350 (Продажи); Серик 200, Алия 400, Жанар 240 (IT); Берик 180 (Склад). Данияр (150) и Тимур (170) отбрасываются. 3) GROUP BY title даёт три группы: в Продажах 3 записи, в IT 3 записи, в Складе 1 запись. 4) HAVING COUNT(*) >= 3 исключает группу Склад (1 запись). 5) AVG(salary): Продажи (300 + 250 + 350) / 3 = 300; IT (200 + 400 + 240) / 3 = 280. Результат: «Продажи 300; IT 280».