我有一个看起来像这样的表:
val | fkey | num ------------------ 1 | 1 | 1 1 | 2 | 1 1 | 3 | 1 2 | 3 | 1
我想做的是返回一组行,其中值按’val’分组,并带有fkeys数组,但仅在fkeys数组大于1的情况下。因此,在上面的示例中,返回值将是看起来像:
1 | [1,2,3]
我有以下查询聚合数组:
SELECT val, array_agg(fkey) FROM mytable GROUP BY val;
但这返回类似:
1 | [1,2,3] 2 | [3]
最好的方法是什么?我猜可能是将现有查询用作子查询,并对它进行求和/计数,但这似乎效率很低。任何反馈都将真正有帮助!
UseHaving子句过滤具有以下内容的组fkey
Having
fkey
SELECT val, array_agg(fkey) FROM mytable GROUP BY val Having Count(fkey) > 1