如何使用 Coalesce 和 Max 提取不为空的最大值列
How can I use Coalesce and Max to extract maximum valued column which is not null
我有列 A, B, C and D
,我想用 MAX(COLUMN_A, COLUMN_B)/MAX(COLUMN_C, COLUMN_D)
创建新的计算列。
这些列中的某些行也有 NULL 值,我如何在 Impala 或 SQL
中执行此操作
您可以使用 least()
和 greatest()
来达到这个目的。忽略 NULL
:
select greatest(a, b) / greatest(c, d)
问题是 NULL
值。我认为这些函数 return 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))
我有列 A, B, C and D
,我想用 MAX(COLUMN_A, COLUMN_B)/MAX(COLUMN_C, COLUMN_D)
创建新的计算列。
这些列中的某些行也有 NULL 值,我如何在 Impala 或 SQL
中执行此操作您可以使用 least()
和 greatest()
来达到这个目的。忽略 NULL
:
select greatest(a, b) / greatest(c, d)
问题是 NULL
值。我认为这些函数 return 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))