SQL/Spark:获取具有group和null值的条件



我需要得到一个if语句按日期字段分组(名为VALIDTO(如果组中有任何null,则只返回一个null值或者在组中不存在null的情况下返回maximun。这应该有效,但它非常棘手,因为MAX、MIN和COUNT忽略空值:

test = sql_context.sql(""" select field1, field2, 
if(MIN(VALIDTO) is null, null, MAX(VALIDTO)) as VALIDTO
from test_table
""")

非常感谢!

您可以通过获取该组中VALIDTO is null的最大值来检查是否存在null:

select 
field1, field2, 
case when max(VALIDTO is null) = False then max(VALIDTO) end as VALIDTO
from test_table
group by field1, field2

嗯。如果任何值都是NULL,我认为您希望validto上的聚合函数返回NULL。如果是,您可以使用case:

(case when count(*) = count(validTo) then max(validTo)
end)

相关内容

  • 没有找到相关文章

最新更新