You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 8.0.2统计数组列中字符串出现次数的问题

解决PostgreSQL 8.0.2中数组列的元素统计问题

你的问题根源在于PostgreSQL 8.0.2不支持JSON_TABLE——这个函数是PostgreSQL 12才引入的特性,而且8.0.2甚至早于原生JSON类型的支持(JSON类型在PostgreSQL 9.2才加入)。另外,8.0.2也没有unnest函数(该函数从8.4开始提供),所以需要用数组下标结合generate_series来展开数组。

假设你的表名为your_table,数组列是fruits_option(类型为text[]或其他数组类型),可以用以下查询统计每种水果的出现次数:

SELECT
    fruit,
    COUNT(*) AS fruit_count
FROM (
    SELECT fruits_option[i] AS fruit
    FROM your_table,
         generate_series(1, array_length(fruits_option, 1)) AS i
    -- 过滤空数组和数组中的NULL元素
    WHERE fruits_option IS NOT NULL 
      AND array_length(fruits_option, 1) > 0
      AND fruits_option[i] IS NOT NULL
) AS unnest_fruits
GROUP BY fruit
ORDER BY fruit_count DESC;

说明:

  1. array_length(fruits_option, 1)获取数组的长度(维度1的元素个数)
  2. generate_series(1, ...)生成从1到数组长度的连续整数,作为数组的下标
  3. fruits_option[i]通过下标取出数组中的每个元素
  4. 外层查询对取出的元素分组并统计次数

如果你的数组类型不是text[],比如varchar[],只需要确保fruits_option[i]的类型能正确分组即可,不需要修改语法。

内容的提问来源于stack exchange,提问作者sourav kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 05:57:38