替换 NULL 值 Impala 查询

Replacing NULL values Impala query

提问人:Asim Khan 提问时间:9/21/2023 最后编辑:DaiAsim Khan 更新时间:9/21/2023 访问量:64

问:

我正在尝试在 Imapala 中创建一个 SQL 语句,该语句会将 NULL 值替换为 1。然后,从此输出生成的字段将相互乘以。

我以为会起作用,但我在输出中仍然是 NULLS。下面是我的语法,我是不是把 1 放在了错误的地方。我该怎么写这个?请帮忙。coalesce

SUM(
    COALSECE(
        CASE WHEN a.level = '8' AND a.assembly_flag = 'X' THEN
            COALSECE( a.inclusion_kg, 1 )
        END
    )
) level_8_inclusion

尝试在语法的不同位置使用合并。

sql 数学 null impala

评论

1赞 Dai 9/21/2023
COALSECE需要 2 个参数 - 但您的第一个(外部)调用站点仅指定 1 个参数。

答:

0赞 Tim Biegeleisen 9/21/2023 #1

我认为您在这里想要某种条件聚合,也许:

SUM(CASE WHEN a.level = '8' AND a.assembly_flag = 'X'
         THEN COALESCE(a.inclusion_kg, 1)
         ELSE 0 END) AS level_8_inclusion

评论

0赞 Asim Khan 9/21/2023
我需要 NULL 为 1,因此当我将级别 8 * 级别 9 相乘时,如果一个或两个值都是 0,它应该返回 1
0赞 SelVazi 9/21/2023 #2

正如@Dai的评论中提到的,需要 2 个参数:COALESCE

如果总和为 NULL 时,这将返回 1

COALESCE(
    SUM(
        CASE WHEN a.level = '8' AND a.assembly_flag = 'X' THEN
            a.inclusion_kg
        END
    ), 1 -- second argument
) level_8_inclusion

评论

0赞 Asim Khan 9/21/2023
我在第二个参数中使用 1 尝试过,但由于 SUM,它返回聚合的 SUM。我还有其他 10 个像这样的语句,然后它们将相互乘以,因此当存在 NULL 时,我需要该值返回 1。这就是我尝试过的 - SUM( COALESCE( CASE 当 a.level = '8' 和 a.assembly_flag = 'X' 然后 coalesce( a.inclusion_kg, 1 ) 结束, 1
0赞 SelVazi 9/21/2023
不清楚你在问什么,你能编辑你的问题并分享一些简单的数据和预期的输出吗?
0赞 SelVazi 9/21/2023
也许你需要这样的东西: COALESCE( SUM( CASE when a.level = '8' AND a.assembly_flag = 'X' THEN a.inclusion_kg END ), 1 ) level_8_inclusion
1赞 Asim Khan 9/21/2023
COALESCE( SUM( CASE 当 a.level = '8' 和 a.assembly_flag = 'X' 然后a.inclusion_kg结束 ), 1 ) level_8_inclusion ---这很有效。我之前尝试过这个,但我的语法不合适。非常感谢