小编典典

如何在数组大小大于1的postgres中获取数组

sql

我有一个看起来像这样的表:

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]

最好的方法是什么?我猜可能是将现有查询用作子查询,并对它进行求和/计数,但这似乎效率很低。任何反馈都将真正有帮助!


阅读 44

收藏
2021-04-22

共1个答案

小编典典

UseHaving子句过滤具有以下内容的组fkey

SELECT val, array_agg(fkey)
FROM mytable
GROUP BY val
Having Count(fkey) > 1
2021-04-22