在Impala中按组减去最大,最小日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Impala中按组减去最大,最小日期相关的知识,希望对你有一定的参考价值。

我有一个查询,我在impala中找到用户的最大和最小日期:

select max(id_date) as last_tran
       ,min(id_date) as first_tran
       ,user
from table_1 a 
join table_2 d
on a.id = d.id
group by 3

我想再按用户减去最小和最大日期。

在Impala中我尝试使用date_sub函数,但它不起作用。

select date_sub(last_tran, first_tran) as date_len
, user
from
(select max(id_date) as last_tran
       ,min(id_date) as first_tran
       ,user
from table_1 a 
join table_2 d
on a.id= d.id
group by 3) time
group by 1,2

似乎date_sub函数的第二个参数必须是一个表示天数的整数。

我怎么能绕过这个?

答案

为了使这项工作,datediff函数应该像这样使用:

select datediff(last_tran, first_tran) as date_len
, user
from
(select max(id_date) as last_tran
       ,min(id_date) as first_tran
       ,user
from table_1 a 
join table_2 d
on a.id= d.id
group by 3) time
group by 1,2

该函数返回开始日期和结束日期之间的天数。从documentation看来,天的回报值似乎无法改变。

以上是关于在Impala中按组减去最大,最小日期的主要内容,如果未能解决你的问题,请参考以下文章

在R中按组计算日期之间的差异

如何在 Oracle 中按组填写缺失的日期

在 Pandas 数据框中按组过滤具有最小值的行 [重复]

在 SQL/Impala 中按特定的分钟数对日期时间进行分组

在 hive/impala sql 中按日期获取数据,

在目录中按组大小压缩文件