在 Impala 中按组减去最大、最小日期
Subtract Max, Min Date by Group in 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
函数开始日期和结束日期之间的天数 returns。从 documentation 看来,天数的 return 值似乎无法更改。
我有一个查询,我在 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
函数开始日期和结束日期之间的天数 returns。从 documentation 看来,天数的 return 值似乎无法更改。