Напишите SQL-запрос: найти top-3 user_id по сумме amount для заказов со статусом COMPLETED за последний месяц.

Нужно отфильтровать завершённые заказы за согласованный интервал, сгруппировать по user_id и отсортировать SUM(amount) по убыванию. «Последний месяц» важно уточнить: календарный или скользящий.

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

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

Нужно отфильтровать завершённые заказы за согласованный интервал, сгруппировать по user_id и отсортировать SUM(amount) по убыванию. «Последний месяц» важно уточнить: календарный или скользящий.

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

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

Нужно отфильтровать завершённые заказы за согласованный интервал, сгруппировать по user_id и отсортировать SUM(amount) по убыванию. «Последний месяц» важно уточнить: календарный или скользящий.

Пример PostgreSQL за предыдущий календарный месяц в timezone сессии:

SELECT user_id, SUM(amount) AS total_amount
FROM orders
WHERE status = 'COMPLETED'
  AND created_at >= date_trunc('month', CURRENT_TIMESTAMP) - INTERVAL '1 month'
  AND created_at < date_trunc('month', CURRENT_TIMESTAMP)
GROUP BY user_id
ORDER BY total_amount DESC NULLS LAST, user_id
LIMIT 3;

Предполагаются соответствующие имена колонок и одна валюта. Для разных валют суммы нельзя складывать без правила пересчёта. LIMIT выбирает ровно до трёх строк; включение всех равных мест требует ранжирования.

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

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

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

Подробнее