Как назначить номера группам? - PullRequest
0 голосов
/ 04 июля 2019

Я могу использовать функцию row_number() для назначения номеров строкам внутри групп:

SELECT
  a.docn as agreement,
  o.id as order_id,
  (ROW_NUMBER() over (PARTITION BY a.id, o.id, ois.consumed_period )) as group_id
  ...

enter image description here

, но как назначитьномера групп?

enter image description here

1 Ответ

0 голосов
/ 04 июля 2019

Кажется, нашел ответ. документ :

Все функции, перечисленные в таблице 9.60, зависят от порядка сортировки, указанного в предложении ORDER BY соответствующего определения окна. Строки, которые не различаются при рассмотрении только столбцов ORDER BY, называются равноправными. Четыре функции ранжирования (включая cume_dist) определены так, что они дают одинаковый ответ для всех строк одноранговых узлов.

select
  a.docn as agreement,
  o.id as order_id,
  (dense_rank() over (PARTITION BY a.id, o.id ORDER BY ois.consumed_period )) as group_id,

Здесь я использую dense_rank до Rank the current row within its partitionwithout gaps и использую от order by до create peers. Таким образом, dense_rank присваивает следующий номер каждому отдельному значению ois.consumed_period

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...