Я хотел бы добавить уникальный номер к каждой уникальной комбинации значений в таблице.Нумерация уникальных комбинаций столбцов
Образец данных:
create table tmp (
id int primary key,
a varchar,
b varchar,
c varchar,
d varchar,
f int
);
insert into tmp values (1,'a','b','e','h',1);
insert into tmp values (2,'a','b','e','h',2);
insert into tmp values (3,'a','b','e','h',3);
insert into tmp values (4,'b','c','f','i',2);
insert into tmp values (5,'b','c','f','i',1);
insert into tmp values (6,'b','c','f','i',2);
insert into tmp values (7,'c','d','g','j',3);
insert into tmp values (8,'c','d','g','j',1);
insert into tmp values (9,'c','d','g','j',2);
Теперь мне нужно присвоить номер для каждой уникальной комбинации столбцов a, b, c, d
и возвращать столбцы id
и gid
(группа Identificator)
Пример вывода (например, строки с идентификатором 1 , 2 3 имеют ту же комбинацию столбцов a, b, c, d
, и в результате эти строки должны иметь одинаковый идентификатор группы):
id;gid
1;2
2;2
3;2
4;3
5;3
6;3
7;1
8;1
9;1
я выяснил следующее решение, но я думаю, что должно быть лучше (и быстрее) способ:
select
id,
gid
from
tmp
join (
select
a, b, c, d, row_number() over() as gid
from
tmp
group by
a, b, c, d) gids using (a, b, c, d)