Базы данных / SQL middle
Оконные функции — что это и зачем?
Ответ
ROW_NUMBER(), RANK(), LAG/LEAD, SUM OVER — агрегации поверх результата без сворачивания строк в группы.
Разбор: Оконные функции считают агрегаты и ранги поверх результата запроса, сохраняя каждую исходную строку, — в этом их отличие от GROUP BY, который схлопывает группы. Главная ошибка — считать их эквивалентом GROUP BY или клиентской постобработкой: они выполняются СУБД после WHERE/GROUP BY/HAVING, но до финального ORDER BY, и не уменьшают количество строк.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.