如何使用coalesce和max来提取非空的最大值列

vsikbqxv  于 2021-06-26  发布在  Impala
关注(0)|答案(1)|浏览(508)

我有专栏 A, B, C and D 并希望创建新的计算列 MAX(COLUMN_A, COLUMN_B)/MAX(COLUMN_C, COLUMN_D) .
这些列中的一些行也有空值,如何在impala或sql中做到这一点

aelbi1ox

aelbi1ox1#

你可以用 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))

相关问题