Задачи по SQL на Leetcode: менеджеры с пятью подчиненными
Возвращаюсь к разбору задач по SQL с Leetcode: в новом видео рассмотрено решение задачи среднего уровня Managers with at Least 5 Direct Reports.
Основная сложность: нужно сделать JOIN, но не двух таблиц между собой, а таблицы и подзапроса. В подзапросе ищем идентификаторы необходимых менеджеров с помощь GROUP BY и HAVING, а затем объединяем с основной таблицей, чтобы вывести имена менеджеров, как требуется в задаче.
В проверочных тестах есть хитрый кейс с двумя менеджерами с одинаковыми именами, но разными id, поэтому группировку по именам менеджеров сразу делать нельзя 😊. Из-за этого и потребовался дополнительный подзапрос.
Попутно рассматриваем особенности работы с NULL в агрегатной функции COUNT() и вспоминаем, чем HAVING отличается от WHERE.
Скрипт для создания демонстрационных данных - 5emp_managers.sql.
sql
подзапрос
join
having
group by