Можешь назвать основные аналитические функции, используемые в SQL для анализа данных?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
Нужно показать, что аналитические функции в SQL работают по окну данных и позволяют считать метрики без свёртки строк. Обычно ждут знание базовых функций для ранжирования, накопительных итогов, сравнения строк между собой и доступа к соседним значениям. Также важно понимать, когда использовать OVER(), PARTITION BY и ORDER BY.
Определение:
Аналитические функции в SQL — это функции, которые вычисляют значение для каждой строки на основе набора строк, называемого окном. В отличие от агрегатных функций, они не уменьшают количество строк в результате. Они полезны для ранжирования, подсчёта накопительных итогов, поиска предыдущего/следующего значения и анализа распределения данных.
Пример использования:
SELECT
user_id,
order_date,
amount,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY order_date) AS rn,
SUM(amount) OVER (PARTITION BY user_id ORDER BY order_date) AS running_total,
LAG(amount) OVER (PARTITION BY user_id ORDER BY order_date) AS prev_amount
FROM orders;
В этом примере:
ROW_NUMBER()нумерует заказы каждого пользователя по дате.SUM(...) OVER(...)считает накопительную сумму по пользователю.LAG(...)показывает сумму предыдущего заказа.
Пояснение кода:
Код показывает типичный набор аналитических функций для анализа последовательности событий. Сначала строки группируются по пользователю через PARTITION BY user_id. Затем ORDER BY order_date задаёт порядок внутри каждой группы.
ROW_NUMBER() выдаёт порядковый номер строки в окне. SUM(amount) OVER (...) считает накопительный итог от первой строки окна до текущей. LAG(amount) берёт значение из предыдущей строки в том же окне, что удобно для сравнения с прошлым периодом.
Ключевые моменты:
- Основные аналитические функции:
ROW_NUMBER,RANK,DENSE_RANK,LAG,LEAD,SUM OVER,AVG OVER,MIN OVER,MAX OVER,NTILE. OVER()превращает обычную агрегатную логику в построчный анализ.PARTITION BYделит данные на независимые группы.ORDER BYвнутри окна задаёт порядок вычислений.- Аналитические функции не схлопывают строки, в отличие от
GROUP BY. - Особенно часто используются для рейтингов, временных рядов, накопительных итогов и сравнений с предыдущими/следующими значениями.