提问人:Asim Khan 提问时间:9/21/2023 最后编辑:DaiAsim Khan 更新时间:9/21/2023 访问量:64
替换 NULL 值 Impala 查询
Replacing NULL values Impala query
问:
我正在尝试在 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
尝试在语法的不同位置使用合并。
答:
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 ---这很有效。我之前尝试过这个,但我的语法不合适。非常感谢
评论
COALSECE
需要 2 个参数 - 但您的第一个(外部)调用站点仅指定 1 个参数。