В аналитике оконные функции используют для ранжирования, сравнения соседних строк и вычисления накопительных или скользящих показателей. Например, ROWNUMBER, RANK, DENSERANK, LAG, LEAD, а также агрегаты с OVER.
Какие оконные функции используют в аналитике и чем RANK отличается от DENSE_RANK?
В аналитике оконные функции используют для ранжирования, сравнения соседних строк и вычисления накопительных или скользящих показателей. Например, ROWNUMBER, RANK, DENSERANK, LAG, LEAD, а также агрегаты с OVER.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В аналитике оконные функции используют для ранжирования, сравнения соседних строк и вычисления накопительных или скользящих показателей. Например, ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD, а также агрегаты с OVER.
RANK() присваивает одинаковый ранг строкам с одинаковыми значениями сортировки и оставляет пропуски. DENSE_RANK() присваивает те же общие ранги, но без пропусков:
| Значение по убыванию | RANK() | DENSE_RANK() |
|---|---|---|
| 100 | 1 | 1 |
| 100 | 1 | 1 |
| 90 | 3 | 2 |
| 80 | 4 | 3 |
Равенство определяется всеми выражениями ORDER BY внутри OVER, а не произвольным столбцом. Поэтому добавление уникального идентификатора к сортировке уберёт совпадения рангов. Оконные функции PostgreSQL
Если вопрос касается личного опыта, лучше назвать реально использованные функции и задачу, например сравнение метрики с предыдущим периодом через LAG, а не перечислять весь каталог.