0

给定一个列a,它是 的结果array_to_string(array(some_column)),我如何计算其中出现的值?

假设我有'1,2,3,3,4,5,6,3'一个列的值。
如何获得该值的出现次数'3'

4

4 回答 4

1

我自己解决了。谢谢你的所有想法!

SELECT count(something)
FROM unnest(
        string_to_array(
            '1,2,3,3,4,5,6,3'
        , ',')
    ) something
WHERE something = '3'
于 2015-04-28T04:22:38.087 回答
0

看来您需要使用unnest

尝试这个:

select idTable, (select sum(case x when '3' then 1 else 0 end) 
from unnest(a) as dt(x)) as counts 
from yourTable;
于 2015-04-28T03:30:54.597 回答
0

为什么不只创建一个 for loop() 并在 if/else 语句中为值 == 3 增加一个变量 i

for(var i =0; i<intArray.length;i++){
     if(int[i] = 3){
     var j += 1;

} }

类似的东西,希望你明白。

于 2015-04-28T04:19:14.817 回答
0

基于我的“如何使用 PostgreSQL 计算锚定字符串的出现次数?”

计算子字符串中出现次数的最快方法是这样。

SELECT length(data) - length(replace(data, '3', ''))
  / length('3')
FROM foo;

如果您使用 来创建字符串array_to_string,那么它是有意义的unnest,但它不会更快。此外,我很想看到完整的查询。

count(CASE WHEN some_column=3 THEN 1 END)

听起来最快,或者如果您升级到新版本的 PostgreSQL..

count(*) FILTER (WHEN some_column=3)
于 2017-03-10T02:24:57.547 回答