Sobes.tech
Назад к вопросам
Senior
3

SQL задача: вывести id пользователей и количество их заказов в статусе COMPLETED, включая пользователей с нулевым количеством таких заказов

Компании, где спрашивали
Сбер Право

Ответ от нейросети

sobes.tech AI

Чтобы вывести id всех пользователей и количество их заказов в статусе COMPLETED, включая пользователей без таких заказов, нужно использовать LEFT JOIN между таблицей пользователей и заказов, а затем сгруппировать по пользователю.

Пример SQL-запроса:

SELECT u.id AS user_id, 
       COUNT(o.id) AS completed_orders_count
FROM users u
LEFT JOIN orders o ON o.user_id = u.id AND o.status = 'COMPLETED'
GROUP BY u.id
ORDER BY u.id;

Объяснение:

  • LEFT JOIN гарантирует, что все пользователи попадут в результат, даже если у них нет заказов с нужным статусом.
  • Условие по статусу COMPLETED помещено в ON, чтобы не исключать пользователей без таких заказов.
  • COUNT(o.id) считает количество заказов с нужным статусом, для отсутствующих будет 0.