Выбор ответа 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.

Варианты ответа

  1. 0
  2. NULL
  3. Отдела не будет в результате
  4. 1правильный ответ

Разбор

После LEFT JOIN у пустого отдела остаётся одна строка, где колонки сотрудника равны NULL. COUNT(*) считает строки и вернёт 1. Чтобы получить 0, нужно COUNT(e.id): он пропускает NULL. Отдел в результате будет, ведь LEFT JOIN его сохраняет, а NULL получился бы от SUM, но не от COUNT.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме