SQL Middle EXPLAIN и оптимизация спрашивают часто обновлено

Перепиши подзапрос в SELECT на JOIN с GROUP BY

Условие

Отчёт строится запросом с коррелированным подзапросом для каждой строки. Перепиши его на соединение с группировкой, сохранив результат (клиенты без заказов тоже должны остаться с нулём).

Колонки: id, name, orders_cnt. Порядок строк не важен.

SELECT c.id, c.name,
       (SELECT COUNT(*) FROM orders o WHERE o.customer_id = c.id) AS orders_cnt
FROM customers c;

Как подойти

Подсказки: 2
  1. LEFT JOIN + GROUP BY.
  2. Что вернёт COUNT(*) для клиента без заказов?

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

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