通过更新旧 table 中的重复行来创建新视图 psql table

Creating new view psql table by updating duplicate rows in old table

我有一个名为 t1 的 table,它有 3 列 c1、c2,c3.In t1 有一些行具有 c1 的重复值,但 c2 和 c3.Now 的值不同,我想创建一个 psql 视图 table,它检查重复的 c1 并更新它从具有最高 c3 值的行中获取 c2 值的行,并将所有 c3 值添加到新行并创建一个不同的行,因此没有重复项。我遇到的问题是如何根据条件更新列值。可以有多个重复行。对此的任何帮助都是appreciated.Thank你

如果我没理解错的话,一种方法是聚合:

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;