home.social

#window_functions — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #window_functions, aggregated by home.social.

  1. SUM() OVER (ORDER BY...) считает не то, что вы думаете: кадр оконной функции

    Привет, Хабр! SUM() OVER (ORDER BY ...) часто выглядит как очевидный способ посчитать нарастающий итог, пока в данных не появляются одинаковые значения ключа сортировки. В этот момент результат начинает «прыгать», LAST_VALUE возвращает текущую строку, а запрос формально остаётся корректным. В статье разбираем скрытую причину таких сюрпризов — кадр оконной функции: как база подставляет его по умолчанию, чем ROWS отличается от RANGE и какие детали стоит проверять, чтобы аналитические SQL‑запросы считали именно то, что вы ожидали.

    habr.com/ru/companies/otus/art

    #SQL #оконные_функции #window_functions #ROWS #RANGE #PostgreSQL #нарастающий_итог #LAST_VALUE #кадр_окна #аналитические_запросы

  2. RANK() vs DENSE_RANK(): ошибка, которая ломает топ-N в проде

    При работе с данными в SQL рано или поздно возникает задача ранжирования: топ-5 продуктов по продажам, рейтинг сотрудников по KPI, распределение клиентов по категориям. На первый взгляд RANK() и DENSE_RANK() делают почти одно и то же. На тестовых данных разница может быть вообще незаметна. Но в проде именно здесь часто начинаются ошибки: — топ-3 внезапно возвращает 5 строк; — дашборд "врёт"; — backend-логика начинает вести себя не так, как ожидалось; — запрос, который вчера работал быстро, сегодня уходит в disk spill. Две самые популярные функции для ранжирования — RANK() и DENSE_RANK() . Ниже разберём, чем они отличаются, где именно ошибаются разработчики и аналитики, и что важно понимать: не только что делает оконная функция, но и сколько она стоит на больших объёмах данных.

    habr.com/ru/articles/1021094/

    #sql #rank #dense_rank #window_functions #postgresql #оптимизация #производительность #аналитика #базы_данных #topn

  3. RANK() vs DENSE_RANK(): ошибка, которая ломает топ-N в проде

    При работе с данными в SQL рано или поздно возникает задача ранжирования: топ-5 продуктов по продажам, рейтинг сотрудников по KPI, распределение клиентов по категориям. На первый взгляд RANK() и DENSE_RANK() делают почти одно и то же. На тестовых данных разница может быть вообще незаметна. Но в проде именно здесь часто начинаются ошибки: — топ-3 внезапно возвращает 5 строк; — дашборд "врёт"; — backend-логика начинает вести себя не так, как ожидалось; — запрос, который вчера работал быстро, сегодня уходит в disk spill. Две самые популярные функции для ранжирования — RANK() и DENSE_RANK() . Ниже разберём, чем они отличаются, где именно ошибаются разработчики и аналитики, и что важно понимать: не только что делает оконная функция, но и сколько она стоит на больших объёмах данных.

    habr.com/ru/articles/1021094/

    #sql #rank #dense_rank #window_functions #postgresql #оптимизация #производительность #аналитика #базы_данных #topn

  4. RANK() vs DENSE_RANK(): ошибка, которая ломает топ-N в проде

    При работе с данными в SQL рано или поздно возникает задача ранжирования: топ-5 продуктов по продажам, рейтинг сотрудников по KPI, распределение клиентов по категориям. На первый взгляд RANK() и DENSE_RANK() делают почти одно и то же. На тестовых данных разница может быть вообще незаметна. Но в проде именно здесь часто начинаются ошибки: — топ-3 внезапно возвращает 5 строк; — дашборд "врёт"; — backend-логика начинает вести себя не так, как ожидалось; — запрос, который вчера работал быстро, сегодня уходит в disk spill. Две самые популярные функции для ранжирования — RANK() и DENSE_RANK() . Ниже разберём, чем они отличаются, где именно ошибаются разработчики и аналитики, и что важно понимать: не только что делает оконная функция, но и сколько она стоит на больших объёмах данных.

    habr.com/ru/articles/1021094/

    #sql #rank #dense_rank #window_functions #postgresql #оптимизация #производительность #аналитика #базы_данных #topn

  5. RANK() vs DENSE_RANK(): ошибка, которая ломает топ-N в проде

    При работе с данными в SQL рано или поздно возникает задача ранжирования: топ-5 продуктов по продажам, рейтинг сотрудников по KPI, распределение клиентов по категориям. На первый взгляд RANK() и DENSE_RANK() делают почти одно и то же. На тестовых данных разница может быть вообще незаметна. Но в проде именно здесь часто начинаются ошибки: — топ-3 внезапно возвращает 5 строк; — дашборд "врёт"; — backend-логика начинает вести себя не так, как ожидалось; — запрос, который вчера работал быстро, сегодня уходит в disk spill. Две самые популярные функции для ранжирования — RANK() и DENSE_RANK() . Ниже разберём, чем они отличаются, где именно ошибаются разработчики и аналитики, и что важно понимать: не только что делает оконная функция, но и сколько она стоит на больших объёмах данных.

    habr.com/ru/articles/1021094/

    #sql #rank #dense_rank #window_functions #postgresql #оптимизация #производительность #аналитика #базы_данных #topn

  6. Отображение иерархии в SQL запросе

    В процессе тестирования одного курса по SQL на stepik.org встретилась задача, из которой сочинилась другая, более интересная: Необходимо с помощью одного SQL запроса с использованием обобщенных табличных выражений отобразить иерархию, в соответствии с иллюстрацией выше

    habr.com/ru/articles/810687/

    #MySQL #SQL #Common_Table_Expression #CTE #with_recursive #window_functions #Оконные_функции #Иерархические_структуры_в_SQL #Обобщенные_табличные_выражения #sqlite