给定一个列a
,它是 的结果array_to_string(array(some_column))
,我如何计算其中出现的值?
假设我有'1,2,3,3,4,5,6,3'
一个列的值。
如何获得该值的出现次数'3'
?
给定一个列a
,它是 的结果array_to_string(array(some_column))
,我如何计算其中出现的值?
假设我有'1,2,3,3,4,5,6,3'
一个列的值。
如何获得该值的出现次数'3'
?
我自己解决了。谢谢你的所有想法!
SELECT count(something)
FROM unnest(
string_to_array(
'1,2,3,3,4,5,6,3'
, ',')
) something
WHERE something = '3'
看来您需要使用unnest。
尝试这个:
select idTable, (select sum(case x when '3' then 1 else 0 end)
from unnest(a) as dt(x)) as counts
from yourTable;
为什么不只创建一个 for loop() 并在 if/else 语句中为值 == 3 增加一个变量 i
for(var i =0; i<intArray.length;i++){
if(int[i] = 3){
var j += 1;
} }
类似的东西,希望你明白。
基于我的“如何使用 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)