Как получить 5 последних записей для каждой группы (например, 5 последних заказов каждого клиента)?
Уровень: Senior
Ответ
Необходимо внутри каждой группы определить "последние 5" записи по какому-либо критерию (например, по дате). Решение: использовать оконную функцию нумерации строк. Присвоим каждой записи номер по дате внутри группы (PARTITION BY client_id ORDER BY order_date DESC) через ROW_NUMBER(). Затем выберем строки, где номер ≤ 5. Такие строки и будут 5 самыми поздними заказами для каждого клиента. Этот подход дает универсальное решение top-N по группе без сложных подзапросов.