如果列a
是array_to_string(array(some_column))
的结果,我该如何计算值的出现?
假设我有'1,2,3,3,4,5,6,3'
作为列的值
如何获取值'3'
的出现次数?
答案 0 :(得分:1)
我自己解决了。谢谢你的所有想法!
SELECT count(something)
FROM unnest(
string_to_array(
'1,2,3,3,4,5,6,3'
, ',')
) something
WHERE something = '3'
答案 1 :(得分:0)
您似乎需要使用不需要。
试试这个:
select idTable, (select sum(case x when '3' then 1 else 0 end)
from unnest(a) as dt(x)) as counts
from yourTable;
答案 2 :(得分:0)
为什么不只是创建一个for循环()并在if / else语句中递增变量i,以便每当值== 3
for(var i =0; i<intArray.length;i++){
if(int[i] = 3){
var j += 1;
} }
类似的东西,希望你能得到这个想法。
答案 3 :(得分:0)
Based on my "How do you count the occurrences of an anchored string using 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)