Menu
Coddy logo textTech

Критерий PARTITION BY

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

Другим вариантом для предложения OVER () является PARTITION BY

Это позволяет нам нумеровать строки для каждой группы отдельно 

Например:

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

Это создаст столбец, который будет нумеровать каждый тип внутри себя:

idtyperow_num
132t11
52t21
92t11
154t31
198t13

id 92 имеет row_num 1, потому что это наименьший id в type t1.

Примечание: ROW_NUMBER() требует предложения ORDER BY внутри OVER() для определения того, как строки должны быть пронумерованы внутри каждого раздела.

Мы даже можем указать несколько столбцов внутри PARTITION BY:

ROW_NUMBER() OVER (PARTITION BY type, hue ORDER BY id)
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>

Завод производит двери. Ему необходимо пронумеровать двери для каждой комбинации country и color, у которых publication_year меньше 2000. Назовите этот столбец row_num.

Двери должны быть пронумерованы внутри каждой группы в порядке возрастания их id. Двери без спецификаций следует игнорировать. Отсортируйте окончательный результат в порядке возрастания по id

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

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

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

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

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