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

У меня есть сценарий использования, в котором я хочу назначить уникальный увеличивающийся номер раздела каждому разделу при использовании запроса окна в postgres.

Например, я хочу получить вывод, подобный этому:

Partition Key | Row_Num() | Partition Number  
Apple         | 1         | 1
Apple         | 2         | 1
Oranges       | 1         | 2
Oranges       | 2         | 2
Pear          | 1         | 3
Pear          | 2         | 3

По сути, кроме row_num (), который дает нам уникальное значение в каждом «окне», я хочу иметь число, уникальное для каждого «окна». Как мне этого добиться?Есть ли встроенная функция в postgres для этого?

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Вы ищете dense_rank()

. . .
dense_rank() over (order by PartitionKey) as number
0 голосов
/ 04 июня 2018

Вы, кажется, хотите:

select partitionkey,
       row_number() over (partition by partitionkey order by partitionkey) as row_num,
       dense_rank() over (order by partitionkey) as partition_number
from t;
...