🔗 Ресурсы
⚡ Кратко: ресурсы
Функции смещения и выбора позволяют смотреть не только на текущую строку, но и на соседние или крайние строки внутри окна.
LAG() возвращает значение из предыдущей строки, а LEAD() — из следующей строки в порядке, заданном внутри OVER.
FIRST_VALUE(), LAST_VALUE() и NTH_VALUE() выбирают первое, последнее или n-е значение в окне.
Ключевая конструкция урока: function(column) OVER (PARTITION BY group_column ORDER BY sort_column).
Минимальный пример: LAG(creation_date) OVER (PARTITION BY supplier_id ORDER BY creation_date) показывает предыдущую дату заказа поставщика.
Топ-3 ошибки: забыть ORDER BY, перепутать направление LEAD/LAG, использовать LAST_VALUE без явной рамки окна.
🔗 Официальная документация
- 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. Перед переносом запроса между СУБД сверяйте раздел соответствующей документации.