> Напиши SQL запрос для вывода суммы продаж по каждому пользователю, учитывая, что у пользователя может не быть продаж (Go)

Уровень: middle · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: Ozon

Стек: Go

> Пример ответа

Для решения задачи используем LEFT JOIN между таблицами пользователей и продаж, чтобы включить пользователей без продаж. Функция COALESCE (или IFNULL) подставит 0 вместо NULL.

SQL
SELECT
u.id AS user_id,
u.name AS user_name,
COALESCE(SUM(s.amount), 0) AS total_sales
FROM
users u
LEFT JOIN
sales s ON u.id = s.user_id
GROUP BY
u.id, u.name
ORDER BY
total_sales DESC;

Пояснение:

  • LEFT JOIN гарантирует, что все пользователи из таблицы users будут в результате, даже если у них нет записей в sales.
  • COALESCE(SUM(s.amount), 0) заменяет NULL (когда нет продаж) на 0.
  • Группировка по u.id и u.name обязательна, так как в SELECT используются неагрегированные поля.

Пример вывода:

user_iduser_nametotal_sales
1Иван1500
2Мария0

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью