> Напиши SQL запрос для вывода суммы продаж по каждому пользователю, учитывая, что у пользователя может не быть продаж (Go)
Уровень: middle · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Ozon
Стек: Go
> Пример ответа
Для решения задачи используем LEFT JOIN между таблицами пользователей и продаж, чтобы включить пользователей без продаж. Функция COALESCE (или IFNULL) подставит 0 вместо NULL.
SQLSELECTu.id AS user_id,u.name AS user_name,COALESCE(SUM(s.amount), 0) AS total_salesFROMusers uLEFT JOINsales s ON u.id = s.user_idGROUP BYu.id, u.nameORDER BYtotal_sales DESC;
Пояснение:
LEFT JOINгарантирует, что все пользователи из таблицыusersбудут в результате, даже если у них нет записей вsales.COALESCE(SUM(s.amount), 0)заменяет NULL (когда нет продаж) на 0.- Группировка по
u.idиu.nameобязательна, так как вSELECTиспользуются неагрегированные поля.
Пример вывода:
| user_id | user_name | total_sales |
|---|---|---|
| 1 | Иван | 1500 |
| 2 | Мария | 0 |
> Похожие задачи по Go
Для чего используется MongoDB
Что такое система git и насколько хорошо вы с ней знакомы
Расскажите про опыт оптимизации
Происходит ли копирование данных при передаче слайса и массива в функцию в Go
> Похожие задачи по backend
Для чего используется MongoDB
Что такое система git и насколько хорошо вы с ней знакомы
Расскажите про опыт оптимизации
Что такое MITM (man-in-the-middle) атака и как с ней бороться
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью