Сгруппируйте транзакции по user_id, отсортируйте количество по убыванию и выберите первые пять. Для воспроизводимости добавьте сортировку по user_id при равенстве.
Выведите топ-5 пользователей по количеству совершённых ими транзакций.
Сгруппируйте транзакции по user_id, отсортируйте количество по убыванию и выберите первые пять. Для воспроизводимости добавьте сортировку по user_id при равенстве.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сгруппируйте транзакции по user_id, отсортируйте количество по убыванию и выберите первые пять. Для воспроизводимости добавьте сортировку по user_id при равенстве.
Предположим таблицу transactions(id, user_id), где одна строка — одна учитываемая транзакция:
SELECT user_id, COUNT(*) AS transaction_count
FROM transactions
WHERE user_id IS NOT NULL
GROUP BY user_id
ORDER BY transaction_count DESC, user_id
LIMIT 5;
Если считать нужно только завершённые операции или определённый период, добавьте соответствующий фильтр до GROUP BY. Запрос возвращает максимум пять пользователей; для всех участников, разделивших пятое место, потребуется ранжирование и отдельно согласованное правило ничьих. Имена можно получить соединением с таблицей пользователей.