Содержание
- 2. Содержание Что это, зачем и как работает Примеры Аналоги агрегатных. Ограничения окна 10.06.2019 GlowByte Consulting
- 3. Знакомьтесь – модельная таблица История операций по банковским счетам 10.06.2019 GlowByte Consulting
- 4. Общий синтаксис 10.06.2019 GlowByte Consulting функция(аргументы) OVER (параметры окна) Видите слово OVER – значит, перед вами
- 5. Зачем нужны аналитические функции? Вычислить значение, которое зависит от порядка строк* 10.06.2019 GlowByte Consulting SELECT H.*,
- 6. Зачем еще нужны? Вычислить метрику* и не схлопывать группу строк в одну 10.06.2019 GlowByte Consulting SELECT
- 7. Еще типичные задачи на оконные функции Посчитать промежуточную сумму Посчитать процент ЗП сотрудника от общей ЗП
- 8. Аналитические vs Однострочные Что общего: не меняют детализацию выборки, просто добавляют к ней столбец. В чем
- 9. Аналитические vs Агрегатные Что общего: при вычислении обращаются к набору строк. В чем разница: агрегатные схлопывают
- 10. Еще про синтаксис – параметры окна PARTITION BY – разбивает строки на группы. ORDER BY –
- 11. Важно! Аналитические функции вычисляются только в SELECT или ORDER BY. Хочешь поставить в WHERE? Делай подзапрос.
- 12. Фильтруем по аналитической функции Найдем последний платеж по каждому счету. Это популярное применение ROW_NUMBER. 10.06.2019 GlowByte
- 13. С ROW_NUMBER понятно. Какие еще бывают? 10.06.2019 GlowByte Consulting
- 14. Ранжирование – RANK, DENSE_RANK Ранжируют строки по полю, по которому сортируем 10.06.2019 GlowByte Consulting SELECT H.*,
- 15. RANK и DENSE_RANK – пример Топ 3 снятий со счета 10.06.2019 GlowByte Consulting SELECT ACC_ID, VALUE,
- 16. FIRST_VALUE – первое значение столбца 10.06.2019 GlowByte Consulting SELECT ACC_ID, VALUE, DT, FIRST_VALUE(VALUE) OVER ( PARTITION
- 17. LAG и LEAD – идем в соседние строки Найдем величину предыдущей и следующей операции по счету
- 18. Аналоги агрегатных функций 10.06.2019 GlowByte Consulting
- 19. Аналоги агрегатных функций Пишем к агрегатной функции OVER (…) – получаем оконную. Только не меняем детализацию
- 20. А если добавим ORDER BY? Получим скользящую метрику: 10.06.2019 GlowByte Consulting SELECT H.*, -- денег на
- 21. Ограничиваем окно строк 10.06.2019 GlowByte Consulting
- 22. Ограничиваем окно – ROWS 10.06.2019 GlowByte Consulting Сумма по 2 последним платежам: SELECT H.*, SUM(VALUE) OVER
- 23. ROWS – между чем и чем? 10.06.2019 GlowByte Consulting ROWS BETWEEN AND и могут быть: CURRENT
- 24. Ограничиваем окно – RANGE Сумма платежей за последние 2 дня: 10.06.2019 GlowByte Consulting SELECT H.*, SUM(VALUE)
- 25. RANGE – особенности Между чем и чем считает – синтаксис, как у ROWS. В SQL Server
- 26. ! Не всегда детерминирован результат 10.06.2019 GlowByte Consulting Запускаем запрос 2 раза – получаем разный результат.
- 27. Задачи на дом – см. на вики «Основы баз данных и SQL» 10.06.2019 GlowByte Consulting
- 29. Скачать презентацию