Menu
Coddy logo textTech

PARTITION и ORDER

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

Мы также можем комбинировать PARTITION BY с ORDER BY. Например, рассмотрим следующую table1:

idtype
132t1
52t2
92t1
154t3
198t1
SELECT id, type, ROW_NUMBER() OVER (PARTITION BY type ORDER BY id) as row_num
FROM table1

Это пронумерует строки в возрастающем порядке по id каждого типа:

idtyperow_num
132t12
52t21
92t11
154t31
198t13

Теперь id 132 имеет row_num 2, потому что он больше 92 и меньше 198 (из всех строк типа t1).

challenge icon

Задание

Легко

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

  • <strong>doors</strong>: <strong>id</strong>, <strong>publication_year</strong>
  • <strong>doors_specs</strong>: <strong>id</strong>, <strong>country</strong>, <strong>color</strong>

Напишите SQL-запрос для анализа последовательности цветов дверей в каждой стране, упорядоченной по году публикации. Для каждой спецификации двери покажите:

  • Страна
  • Цвет
  • Год публикации
  • Число, представляющее порядок цветов в каждой стране на основе года публикации. Назовите этот столбец color_sequence_number

Шпаргалка

Вы можете комбинировать PARTITION BY с ORDER BY, чтобы нумеровать строки внутри каждой партиции в определённом порядке:

SELECT id, type, ROW_NUMBER() OVER (PARTITION BY type ORDER BY id) as row_num
FROM table1

Это нумерует строки в возрастающем порядке по id внутри каждой группы type. Каждая партиция перезапускает нумерацию с 1.

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

quiz iconПроверьте себя

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

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