PARTITION и ORDER
Часть раздела Основы путешествия по SQL на Coddy — урок 60 из 72.
Мы также можем комбинировать PARTITION BY с ORDER BY. Например, рассмотрим следующую table1:
| id | type |
| 132 | t1 |
| 52 | t2 |
| 92 | t1 |
| 154 | t3 |
| 198 | t1 |
SELECT id, type, ROW_NUMBER() OVER (PARTITION BY type ORDER BY id) as row_num
FROM table1Это пронумерует строки в возрастающем порядке по id каждого типа:
| id | type | row_num |
| 132 | t1 | 2 |
| 52 | t2 | 1 |
| 92 | t1 | 1 |
| 154 | t3 | 1 |
| 198 | t1 | 3 |
Теперь id 132 имеет row_num 2, потому что он больше 92 и меньше 198 (из всех строк типа t1).
Задание
ЛегкоДоступные таблицы и столбцы:
<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.
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
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Вводные вызовы
Повторение - Парламентские выборыПовторение - Арест преступника полициейПовторение - Ёмкость для напитков в бареПовторение - Создание новых столбцов