Функция ROW_NUMBER
Часть раздела Основы путешествия по SQL на Coddy. Урок 57 из 72.
Оконные функции (window functions) выполняют вычисления по набору строк таблицы, связанных с текущей строкой. В отличие от обычных агрегатных функций, оконные функции не объединяют результаты в одну строку.
Они особенно полезны, когда вам нужно:
- Вычислить скользящие итоги
- Ранжировать элементы внутри групп
- Сравнить текущие строки с предыдущими или следующими строками
- Проанализировать тенденции за определенные периоды времени
Например, вот несколько реальных примеров использования window functions:
- Анализ продаж
- Рассчитать кумулятивные продажи для каждого года (1995, 1997, 1999)
- Найти самые продаваемые товары для каждого квартала
- Спортивная статистика
- Отслеживание количества олимпийских медалей за разные годы
- Определение ведущих спортсменов в каждый период соревнований (2000, 2004, 2008)
ROW_NUMBER() — одна из самых простых оконных функций. Она присваивает уникальный порядковый номер каждой строке в результирующем наборе. Вот как её использовать:
SELECT column1, column2,
ROW_NUMBER() OVER ([PARTITION BY column] [ORDER BY column]) as row_num
FROM table_name;Использование конструкции OVER с ROW_NUMBER() является обязательным: ROW_NUMBER() OVER ()
Например:
SELECT product_name, sale_date,
ROW_NUMBER() OVER () as row_num
FROM sales;Это добавляет столбец row_num, который считает от 1 до общего количества строк.
Примечание: Предложение OVER может содержать инструкции сортировки и разбиения для управления тем, как работает нумерация.
Задание
ЛегкоДоступные таблицы и столбцы:
<strong>liquids</strong>:<strong>id</strong>,<strong>density</strong>
Выберите все жидкости с плотностью более 5.677.
Пронумеруйте результат (используйте функцию ROW_NUMBER()) и назовите этот столбец row_num
Попробуйте сами
-- Пронумеруйте каждую строку отфильтрованного результата с помощью оконной функции
SELECT id, density, ____ as row_num
FROM liquids
WHERE density > ____В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Больше ключевых слов
Ключевое слово INКлючевое слово BETWEENКлючевое слово LIKEКлючевое слово ASПовторение - Модели мобильных телефонов2Условия
Основы условийКлючевое слово ANDКлючевое слово ORКлючевое слово NOTКомбинирование нескольких условийСкобкиБулевы значения5Арифметические операции
Математические операторыМатематические столбцыОперация moduloФункция ROUND()8Статистика
Встроенные агрегатные функции. Часть 1Встроенные агрегатные функции. Часть 2Группировка. Часть 1Группировка. Часть 2Подзапросы. Часть 1Подзапросы. Часть 2Повторение - Магазин общей прибылиПовторение - Магазин скутеровПовторение - Кофейня11Оконные функции, часть 1
Функция ROW_NUMBERКритерий ORDER BYКритерий PARTITION BYPARTITION и ORDERФункции LEAD и LAGПовторение - LEAD и LAGПовторение - КартинкиПовторение - Блоки3Специальный формат возврата
Значения NULLСортировка результатов, часть 1Сортировка результатов, часть 2Повторение - Фирма по кибербезопасностиОграничение количества записейПовторение - Автозавод6Вводные вызовы
Повторение - Парламентские выборыПовторение - Арест преступника полициейПовторение - Ёмкость для напитков в бареПовторение - Создание новых столбцовПотренируйтесь самостоятельно: Песочница SQL