🔗 Ресурсы
⚡ Кратко: ресурсы
Summary session 10 повторяет два блока оконных функций: ранжирование и смещение/выбор.
Для ранжирования используем ROW_NUMBER, RANK, DENSE_RANK, NTILE.
Для сравнения соседних строк используем LAG и LEAD; для крайних значений — FIRST_VALUE и LAST_VALUE.
Минимальный пример: DENSE_RANK() OVER (ORDER BY quantity DESC) строит рейтинг по количеству, а LAG(date_received) OVER (ORDER BY date_received) находит предыдущую дату.
Топ-3 ошибки: путать RANK и DENSE_RANK, забывать ORDER BY в окне, фильтровать результат окна до внешнего SELECT.
🔗 Официальная документация
- MySQL — Window Functions
- MySQL — CREATE INDEX
- MySQL — EXPLAIN
- PostgreSQL — Window Functions tutorial
- PostgreSQL — Indexes
- SQLite — Window Functions
- SQLite — Query Planner
- DBeaver Documentation
Проверить по документации: синтаксис и детали оптимизатора различаются между MySQL, PostgreSQL и SQLite. Перед переносом запроса между СУБД сверяйте раздел соответствующей документации.