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

如何在SQL中统计字符串列表列中各不同字符串的出现次数

高效统计数组列中标签的出现次数

你现在手动替换标签名反复查询的方式确实太繁琐了,不仅效率低,还很容易漏掉某些标签。其实利用数据库自带的数组展开函数,就能一次性统计所有标签的出现次数,下面给你适配不同场景的解决方案:

PostgreSQL(适配你的表结构)

从你的表名public.content来看,应该是PostgreSQL环境,直接用unnest函数把数组拆成单独的行,再分组统计即可:

SELECT unnest(tags) AS tag, COUNT(*) AS count
FROM "public"."content"
GROUP BY tag
ORDER BY count DESC;

语句说明:

  • unnest(tags)会把每个数组里的元素拆成独立的行,比如["pandas", "conda"]会变成两行数据,分别对应pandas和conda
  • GROUP BY tag按标签分组,COUNT(*)统计每个标签的出现次数
  • ORDER BY count DESC可以让结果按次数从多到少排序,方便快速查看热门标签

其他数据库的类似实现

如果是BigQuery这类支持数组的数据库,写法稍有不同,但核心逻辑一致:

SELECT tag, COUNT(*) AS count
FROM "public"."content", UNNEST(tags) AS tag
GROUP BY tag
ORDER BY count DESC;

特殊情况处理

如果你的标签数组里存在行内重复(比如某条数据的tags是["conda", "conda"]),而你希望每个行里的标签只算一次(不管重复多少次),可以先对行内的标签去重再展开:

SELECT unnest(DISTINCT tags) AS tag, COUNT(*) AS count
FROM "public"."content"
GROUP BY tag
ORDER BY count DESC;

这种方法只需要一次查询就能得到所有标签的统计结果,比你现在的方式高效太多,也不会遗漏任何标签~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 18:32:46