Menu
Coddy logo textTech

Функция ROW_NUMBER

Часть раздела Основы путешествия по SQL на Coddy. Урок 57 из 72.

Оконные функции выполняют вычисления по набору строк таблицы, связанных с текущей строкой. В отличие от обычных агрегатных функций, оконные функции не объединяют результаты в одну строку.

Они особенно полезны, когда вам нужно:

  • Рассчитывать накопительные итоги
  • Ранжировать элементы внутри групп
  • Сравнивать текущие строки с предыдущими/следующими строками
  • Анализировать тенденции за определённые периоды времени

Например, вот несколько примеров использования оконных функций в реальных сценариях:

  • Анализ продаж
    • Рассчитать накопленные продажи по каждому году (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 может содержать инструкции по сортировке и разбиению на разделы, чтобы управлять принципом нумерации.

challenge icon

Задание

Легко

Доступные таблицы и столбцы:

  • liquids: id, density

Выберите все жидкости с плотностью более 5.677.

Пронумеруйте результат (используйте функцию ROW_NUMBER()) и назовите этот столбец row_num

Попробуйте сами

-- Пронумеруйте каждую строку отфильтрованного результата с помощью оконной функции
SELECT id, density, ____ as row_num
FROM liquids
WHERE density > ____
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Песочница SQL