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

ARRAY JOIN场景下将NULL转换为0的SQL实现方案问询

问题:将关联生成表中的NULL值替换为0(保留array_agg ignore nulls参数)

我有一张由Table_A与数组表Table_B关联生成的表,表中存在NULL值,希望将这些NULL替换为0。现有SQL代码使用了带ignore nulls的array_agg且无法移除该参数,需要解决转换问题。

当前表

Date  | Sessions | ID          | City
------+----------+-------------+-------------
06-02 | 1        | 107         | Cardiff
      |          | 102         | Paris
06-03 | NULL     | NULL        | NULL
11-12 | 1        | 105         | Amsterdam
      |          | 107         | Cardiff
      |          | 103         | Rome
27-06 | NULL     | NULL        | NULL

期望输出表

Date  | Sessions | ID          | City
------+----------+-------------+-------------
06-02 | 1        | 107         | Cardiff
      |          | 102         | Paris
06-03 | 0        | 0           | 0
11-12 | 1        | 105         | Amsterdam
      |          | 107         | Cardiff
      |          | 103         | Rome
27-06 | 0        | 0           | 0

当前SQL代码

select date, Sessions,
    array_agg(a.ID ignore nulls) as ID, array_agg(City ignore nulls) as City
  from Table_B b, unnest (ID) as ID_un
  left join Table_A a on ID_un = cast(a.ID as string)
  group by 1, 2
             ...

解决方案

要实现需求,我们可以在聚合结果外层增加判断逻辑,同时对Sessions字段直接替换NULL:

SELECT 
  date,
  COALESCE(Sessions, 0) AS Sessions,
  -- 处理ID字段:聚合结果为空时返回[0],否则保留原结果
  CASE 
    WHEN array_agg(a.ID ignore nulls) = [] THEN [0]
    ELSE array_agg(a.ID ignore nulls) 
  END AS ID,
  -- 处理City字段:聚合结果为空时返回['0'],否则保留原结果(City为字符串类型)
  CASE 
    WHEN array_agg(City ignore nulls) = [] THEN ['0']
    ELSE array_agg(City ignore nulls) 
  END AS City
FROM Table_B b, unnest (ID) as ID_un
LEFT JOIN Table_A a ON ID_un = cast(a.ID as string)
GROUP BY 1, 2

逻辑说明

  • COALESCE(Sessions, 0):直接将Sessions中的NULL值替换为0。
  • 对于ID和City的聚合结果:因为array_agg(ignore nulls)会过滤掉所有NULL值,当没有匹配到有效数据时会得到空数组,此时我们返回包含0(或字符串'0')的数组;如果聚合结果不为空,则保留原聚合值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:05:23