Подсчёт общей суммы операций для каждого пользователя

Соедините пользователей со счетами и операциями, затем суммируйте amount по пользователю. LEFT JOIN и COALESCE сохранят пользователей без операций с итогом 0.

Короткий ответ

Что ответить на собеседовании

Соедините пользователей со счетами и операциями, затем суммируйте amount по пользователю. LEFT JOIN и COALESCE сохранят пользователей без операций с итогом 0.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо вывести суммарную величину всех транзакций, выполненных каждым пользователем.

Имеются три таблицы:

  • users (user_id, phone, name, age, email)
  • accounts (account_id, user_id, created_by, changed_by)
  • operations (account_id, amount, operation_time, operation_id)

Ответ

Соедините пользователей со счетами и операциями, затем суммируйте amount по пользователю. LEFT JOIN и COALESCE сохранят пользователей без операций с итогом 0.

Запрос:

SELECT u.user_id, u.name, COALESCE(SUM(o.amount), 0) AS total_amount
FROM users u
LEFT JOIN accounts a ON a.user_id = u.user_id
LEFT JOIN operations o ON o.account_id = a.account_id
GROUP BY u.user_id, u.name;

Предполагаются уникальные ключи пользователей и счетов и одна валюта или заранее приведённые суммы. Не используйте SUM(DISTINCT amount): одинаковые суммы могут принадлежать разным операциям. Знак amount учитывается как хранится; складывать абсолютные значения условие не просит.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее