Помимо базового ранжирования, SQL предоставляет несколько продвинутых оконных функций, которые позволяют выполнять сложный анализ данных без схлопывания строк, как это делает GROUP BY.
PERCENT_RANK – вычисляет относительный ранг строки в виде процента от 0 до 1 внутри разделаCUME_DIST – возвращает кумулятивное распределение значения, показывая какую долю строк находится на уровне текущей строки или нижеNTILE(n) – делит строки на n равных бакетов, полезна для разделения данных на квартили или децилиFIRST_VALUE / LAST_VALUE – получает первое или последнее значение в определённом окнеNTH_VALUE(col, n) – возвращает значение из n-й строки внутри окнаSELECT
employee_id,
salary,
PERCENT_RANK() OVER (ORDER BY salary) AS salary_percentile,
NTILE(4) OVER (ORDER BY salary) AS salary_quartile
FROM employees;
PERCENT_RANK и CUME_DIST идеальны для сравнительного анализа производительности, например для определения сотрудников, входящих в топ 10% по зарплатеNTILE широко применяется при сегментации клиентов, разделении пользователей на группы вроде высокой, средней и низкой ценностиFIRST_VALUE / LAST_VALUE помогают с анализом трендов, например при сравнении каждой строки с первым или последним значением во временном рядуNTH_VALUE полезна когда нужно обратиться к конкретной позиции в упорядоченном наборе данныхЭти функции выполняются после фильтрации и группировки, но перед возвратом финального результата, что делает их чрезвычайно мощными для аналитических запросов, требующих контекста на уровне строк наряду с агрегированными данными.
PERCENT_RANK() возвращает значения между 0 и 1, представляющие относительный ранг строки как процент в пределах её партиции.
Новый — ещё не проверен сообществом
Вы