Перенумерация Список значений на основе их группировки - PullRequest
0 голосов
/ 04 марта 2020

У меня есть следующие элементы, хранящиеся в таблице:

List # | Sublist # | Sublist Priority
List A | Sublist 1 | 1
List A | Sublist 2 | 3
List B | Sublist 3 | 4
List B | Sublist 4 | 2
...
List X | Sublist 1 | 75
List X | Sublist 2 | 83

Я хотел бы создать дополнительный столбец, который будет пересчитывать приоритет подсписка на основе списка List, в котором находится подсписок. Я хочу, чтобы запрос выглядел в каждом отдельном списке найдите значение MIN приоритета, а затем назначьте этому подсписку новый приоритет «1». Затем найдите следующий список в этом списке и присвойте ему приоритет «2» и т. Д., Пока все списки в этом списке не получат новый приоритет в порядке возрастания

List # | Sublist # | Sublist Priority | New Sublist Priority 
List A | Sublist 1 | 1                | 1
List A | Sublist 2 | 3                | 2
List B | Sublist 3 | 4                | 1
List B | Sublist 4 | 2                | 2
....
List X | Sublist 1 | 75               | 1
List X | Sublist 2 | 83               | 2

1 Ответ

0 голосов
/ 04 марта 2020

Вы описываете:

select t.*,
       row_number() over (partition by list order by sublist_priority) as new_sublist_priority
from t;

Это не работает для списка "B", но, похоже, не следует вашему объяснению.

...