Middle+
17
SQL задача: вытащить последние N покупок каждого пользователя
Компании, где спрашивали
X5
Ответ от нейросети
sobes.tech AI
Чтобы получить последние N покупок каждого пользователя в SQL, можно использовать оконные функции, например ROW_NUMBER() или RANK(), чтобы пронумеровать покупки по дате в порядке убывания, а затем выбрать первые N для каждого пользователя.
Пример на PostgreSQL:
SELECT * FROM (
SELECT
user_id,
purchase_id,
purchase_date,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY purchase_date DESC) AS rn
FROM purchases
) sub
WHERE rn <= N;
Здесь:
PARTITION BY user_idгруппирует данные по пользователям.ORDER BY purchase_date DESCсортирует покупки от новых к старым.ROW_NUMBER()нумерует покупки в каждой группе.- Внешний запрос фильтрует только первые N покупок каждого пользователя.
Если N — параметр, его можно подставить в запрос. Такой подход эффективен и поддерживается большинством современных СУБД.