我试图从Hive表中选择*,其中名为TRANS_DATE的日期列表示> =比最大TRANS_DATE之前的365天。
以下是我迄今为止尝试过的查询:
select * from TABLE
where (TRANS_DATE > DATE_SUB(max(TRANS_DATE), 365)) and
(TRANS_DATE < max(TRANS_DATE));
以下是我遇到的错误: &#34;编译语句时出错:FAILED:SemanticException [错误10128]:第2:28行还不支持UDAF&#39; max&#39;&#34;
日期格式的一个例子是:&#34; 2006-05-30 00:00:00.0&#34;
查询是将数据从蜂巢表读入Qlikview,所以理想情况下我不想事先定义变量,而是希望动态地进行选择。如果我对Hive感到陌生,那么道歉是否是愚蠢的。
答案 0 :(得分:0)
在子查询中计算max_date并与表交叉连接:
select *
from TABLE a
cross join --cross join with single row
(select max(TRANS_DATE) as max_trans_date from TABLE) b
where (a.TRANS_DATE > DATE_SUB(b.max_trans_date, 365))
and (a.TRANS_DATE < b.max_trans_date);
使用分析功能:
select a.* from
(select a.*,
max(TRANS_DATE) over() as max_trans_date
from TABLE a) a
where (a.TRANS_DATE > DATE_SUB(a.max_trans_date, 365))
and (a.TRANS_DATE < a.max_trans_date);