2011-09-28 159 views
1

在Postgres 8.3中,我需要按数组字段中的某些元素进行分组。当我按照阵列本身分组时,会显示所有可能的组合。我只想按元素分组。按PostgreSQL中的数组元素分组

像这样的作品寻找一个元素的计数:

SELECT count(*) 
FROM table 
WHERE foo=any(bar) 

这将返回正确的计数单个数组中的元素。如何为数组中的所有元素返回多个计数?如果我按数组进行分组,它将按照它们存储的相同顺序使用所有数组元素(而不是我需要的)。

编辑为清楚: 酒吧是像{FOO,一些事情}或{FOO,事情}或值的数组{一些事情,否则}

我想知道有多少记录有foo,some,thing等元素的值,然后在数组“bar”中。

回答

0

嗯..你不能由值组..但当然的值是一个包含它... 所以..你可能想这列:

SELECT AVG(blah), foo 
FROM whatever 
WHERE foo=any(bar) 
GROUP BY foo 

应该工作。 。

+0

这并不为我工作。如果bar = {f,o,o}你的例子是:SELECT AVG(),f FROM f WHERE f = any(bar)group by f – Josh

1

喜欢的东西

GROUP BY bar[4] 
+0

这是实际的语法吗?我运行8.3,并没有得到它与您的语法工作。我会用更好的例子更新我的问题。 – Josh