Создание новой таблицы вида psql путем обновления дублирующихся строк в старой таблице - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть таблица с именем t1, и она имеет 3 столбца c1, c2, c3. В t1 есть строки, которые имеют повторяющиеся значения c1, но разные значения c2 и c3. Теперь я хотел создать представление psql таблица, которая проверяет наличие дубликата c1 и обновляет строку, в которой она берет значение c2 из строки, имеющей самое высокое значение c3, и добавляет все значения c3 в новую строку и создает отдельную строку, чтобы не было дубликатов. Проблема у меня заключается в том, как обновить значения столбца на основе критериев. Может быть несколько повторяющихся строк. Буду признателен за любую помощь в этом. Спасибо

1 Ответ

0 голосов
/ 21 апреля 2020

Если я правильно понимаю, один метод агрегации:

select c1,
       (array_agg(c2 order by c3 desc))[1] as c2,
       sum(c3)
from t1
group by c1;

Другой метод будет distinct on:

select distinct on (c2) c1, c2, sum(c3) over (partition by c1)
from t1
order by c1, c3 desc;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...