如何统计PostgreSQL中jsonb数组列各唯一值的出现次数?
PostgreSQL 统计JSONB数值数组的元素出现次数
直接通过拆分数组+分组计数就能实现,不需要先单独获取唯一值。执行以下SQL语句即可:
SELECT JSONB_ARRAY_ELEMENTS_TEXT(aimjoined) AS aim_value, COUNT(*) AS occurrence_count FROM mytable GROUP BY aim_value ORDER BY occurrence_count DESC;
说明:
JSONB_ARRAY_ELEMENTS_TEXT(aimjoined):把aimjoined列里的每个JSONB数组元素拆成单独的行,同时转为文本格式(如果需要保留数值类型,可改用(JSONB_ARRAY_ELEMENTS(aimjoined))::numeric替代)COUNT(*):统计每个唯一值对应的出现次数GROUP BY aim_value:按拆分后的每个值分组聚合ORDER BY occurrence_count DESC:可选,按出现次数从多到少排序,便于快速查看高频值
如果你的数组元素是纯数值,想以数值类型统计,用这个版本:
SELECT (JSONB_ARRAY_ELEMENTS(aimjoined))::numeric AS aim_value, COUNT(*) AS occurrence_count FROM mytable GROUP BY aim_value ORDER BY occurrence_count DESC;
内容的提问来源于stack exchange,提问作者jotamon
相关产品推荐
相关产品推荐

