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

如何统计SQL表中JSON数组字段内用户的出现次数?

统计JSON数组字段中用户的出现次数

现有如下结构的SQL表:

ID  | Need  | Fulfill_User
------------------------------------------------------------------------------
1   |   3   | ["A","A","B"]
2   |   4   | ["B","C","A","B"]
3   |   2   | ["C","A"]
4   |   1   | ["D"]

需要生成统计报表,计算Fulfill_User数组中各用户的总出现次数,得到结果:

  • A = 4
  • B = 3
  • C = 2
  • D = 1

不同数据库的实现方案

因为不同SQL数据库对JSON数组的解析语法不同,以下是主流数据库的实现代码:

1. PostgreSQL

利用jsonb_array_elements_text函数拆分JSON数组,再分组统计:

SELECT 
  user_name,
  COUNT(*) AS occurrence_count
FROM 
  your_table,
  jsonb_array_elements_text(Fulfill_User::jsonb) AS user_name
GROUP BY 
  user_name
ORDER BY 
  occurrence_count DESC;

2. MySQL 8.0+

使用JSON_TABLE将JSON数组转换为关系表结构后统计:

SELECT 
  user_name,
  COUNT(*) AS occurrence_count
FROM 
  your_table,
  JSON_TABLE(
    Fulfill_User,
    '$[*]' COLUMNS(user_name VARCHAR(50) PATH '$')
  ) AS users
GROUP BY 
  user_name
ORDER BY 
  occurrence_count DESC;

3. SQL Server

通过OPENJSON解析JSON数组,结合交叉应用实现统计:

SELECT 
  value AS user_name,
  COUNT(*) AS occurrence_count
FROM 
  your_table
CROSS APPLY 
  OPENJSON(Fulfill_User)
GROUP BY 
  value
ORDER BY 
  occurrence_count DESC;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:24:57