我对 hive 还很陌生。我有一个名为stats的表,如下所示
from_date | to_date | customer_name | callcount
-------------------------------------------------------
2016_01_01 | 2016_01_02 | ABC | 25
2016_01_02 | 2016_01_03 | ABC | 53
2016_01_03 | 2016_01_04 | ABC | 44
2016_01_04 | 2016_01_05 | ABC | 55
我想建立一个配置单元查询将接受:a)当前时间范围(从和到时间)b)以前的时间范围(从和到时间)c)客户名称
例如:输入将是:当前时间范围可以是从时间(2016年1月3日)到时间(2016年1月5日)当前时间范围可以是从时间(2016年1月1日)到时间(2016年1月2日)客户名称可以是
我想显示的结果是:当前通话次数(当前时间范围的通话次数之和)、前一通话次数(前一时间范围的通话次数之和)以及当前通话次数和前一通话次数之差
这样地:
customer | current_call_count | previous_call_count | Diff
---------------------------------------------------------
ABC | 99 | 25 | 74
我构建的查询是:
select * from
(
select sum(callCount) as current_count from stats
where customer_name='ABC' and from_date>='2016-04-03' and to_date<='2016-04-05'
UNION ALL
select sum(callCount) as current_count from stats
where customer_name='ABC' and from_date>='2016-04-01' and to_date<='2016-04-02'
) FINAL
我无法获得计算结果,也无法将结果显示为列。请帮忙
1条答案
按热度按时间qjp7pelc1#
尝试条件聚合:
注意,您的示例数据使用
_
而不是-
(在查询中使用)作为日期分隔符。