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

使用JSON_TABLE关联查询时如何统计含空数组的记录总和?

解决方法

问题出在你用了隐式内连接(逗号分隔表),当invoice_extra_charges是空数组时,JSON_TABLE返回0行,内连接会直接过滤掉这些cargo记录。要包含空数组的记录,需要改成左连接,并处理sum的空值:

调整后的SQL

SELECT 
    COUNT(cargo.invoice_currency_code) AS cargo_record_count,
    cargo.invoice_currency_code,
    COALESCE(SUM(t.amount), 0) AS total_extra_charges
FROM cargo
LEFT JOIN JSON_TABLE(
    cargo.invoice_extra_charges, 
    '$[*]' COLUMNS (amount FLOAT PATH '$.amount')
) AS t ON TRUE
GROUP BY cargo.invoice_currency_code;

关键调整点

  • 将隐式内连接改为LEFT JOIN:确保所有cargo记录(包括空数组的)都被保留,空数组对应的t表字段会是NULL。
  • 用COALESCE(SUM(t.amount), 0):当空数组时SUM(t.amount)返回NULL,通过COALESCE将其转为0,保证统计结果的可读性。
  • 如果需要统计数组元素的总数而非cargo记录数,把COUNT(cargo.invoice_currency_code)改成COUNT(t.amount)即可(空数组的元素数会被统计为0)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:05:32