postgre: перенести значение поля в другое поле для дубликатов

Есть таблица с полями: num, name, num2. Есть дубли с разными num, но одинаковыми name. Нужно записям, у которых num больше 10 в поле num2 прописать num их дублей.

create table table3 (num integer, name varchar(100), num2 integer);
        insert into table3 (num, name) values ('1', 'арбуз');
        insert into table3 (num, name) values ('4', 'мандарин');
        insert into table3 (num, name) values ('5', 'киви');
        insert into table3 (num, name) values ('10', 'банан');
        insert into table3 (num, name) values ('14', 'мандарин');
        insert into table3 (num, name) values ('28', 'арбуз');
        select * from table3;

Таблица до

num  name    num2
1    арбуз       
4    мандарин    
5    киви        
10   банан       
14   мандарин    
28   арбуз       

Таблица после

num  name    num2
1    арбуз       
4    мандарин    
5    киви        
10   банан       
14   мандарин4   
28   арбуз   1   


Ответы (1 шт):

Автор решения: PUnic

В приложении к моей задаче вопрос решен. Может, кому понадобится.

WITH ttt AS (
  SELECT name, 
        min(num) as num
  FROM table3 GROUP BY name HAVING COUNT(name)>1
)
UPDATE table3
  SET num2 = (SELECT num FROM ttt WHERE ttt.name=table3.name )
WHERE table3.num > 10
→ Ссылка