Hive获取where子句的最小两个值



我正在尝试编写一个配置单元查询,因此我需要使用基于日期的where子句来筛选记录。

WHERE date_key 
BETWEEN date_sub(current_date, 4) 
AND MINIMUM(date_sub(current_date, 1), to_date("2018-10-14"))

我们能做两个值的MINIMUM吗?

如果您使用的是oracle,那么有一个名为"最小"的关键字,它将输出值中较小的值。例如:

WHERE date_key 
BETWEEN date_sub(current_date, 4) 
AND LEAST(date_sub(current_date, 1), to_date("2018-10-14"))

否则,您可以手工制作查询以比较以下两个值

WHERE date_key 
BETWEEN date_sub(current_date, 4) 
AND (CASE WHEN date_sub(current_date, 1)< to_date("2018-10-14") THEN 
date_sub(current_date, 1)
ELSE to_date("2018-10-14")
END) 

不用麻烦。只需写:

WHERE date_key >= date_sub(current_date, 4) AND
date_key <= date_sub(current_date, 1) AND
date_key <= to_date('2018-10-14')

如果某个值小于两个值中的最小值,则它小于每个值。

最新更新