我有专栏 A, B, C and D 并希望创建新的计算列 MAX(COLUMN_A, COLUMN_B)/MAX(COLUMN_C, COLUMN_D) .这些列中的一些行也有空值,如何在impala或sql中做到这一点
A, B, C and D
MAX(COLUMN_A, COLUMN_B)/MAX(COLUMN_C, COLUMN_D)
aelbi1ox1#
你可以用 least() 以及 greatest() 为此目的。忽略 NULL :
least()
greatest()
NULL
select greatest(a, b) / greatest(c, d)
问题在于 NULL 价值观。我认为这些函数返回 NULL 如果有任何论据 NULL . 如果已知值为正值,则可以替换 NULL 与0:
select greatest(coalesce(a, 0), coalesce(b, 0)) / greatest(coalesce(c, 0), coalesce(d, 0))
或者,对于两个值,可以使用以下构造:
select greatest(coalesce(a, b), coalesce(b, a)) / greatest(coalesce(c, d), coalesce(d, c))
1条答案
按热度按时间aelbi1ox1#
你可以用
least()
以及greatest()
为此目的。忽略NULL
:问题在于
NULL
价值观。我认为这些函数返回NULL
如果有任何论据NULL
. 如果已知值为正值,则可以替换NULL
与0:或者,对于两个值,可以使用以下构造: