Выбор ответа Middle GROUP BY и агрегаты спрашивают часто обновлено
COUNT(*) после LEFT JOIN
Вопрос
В отделе «Юристы» нет сотрудников. Что запрос покажет для него?
SELECT d.name, COUNT(*)
FROM departments d
LEFT JOIN employees e ON e.department_id = d.id
GROUP BY d.name;
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 1. После LEFT JOIN у пустого отдела остаётся одна строка, где колонки сотрудника равны NULL.
Варианты ответа
- 0
- NULL
- Отдела не будет в результате
- 1правильный ответ
Разбор
После LEFT JOIN у пустого отдела остаётся одна строка, где колонки сотрудника равны NULL. COUNT(*) считает строки и вернёт 1. Чтобы получить 0, нужно COUNT(e.id): он пропускает NULL. Отдел в результате будет, ведь LEFT JOIN его сохраняет, а NULL получился бы от SUM, но не от COUNT.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.