首页 > 解决方案 > 在 hive 中每周计算一列的总和

问题描述

testTable在 Hive 中有一个表格(包含 3 年的数据),其中包含以下列:

retailers, order_total, order_total_qty, order_date

我必须用这些列创建一个新表:

'source_name' as source, sum(retailers), sum(order_total), sum(order_total_qty) 

从开始 order_date 开始的每周。

我被这个困住了。如何以每周汇总的方式对以下数据进行分组。

标签: hiveapache-spark-sqlhiveqlhive-query

解决方案


使用WEEKOFYEAR()函数每周计算聚合。

select 
  'source_name'           source, 
   sum(retailers)         sum_retailers, 
   sum(order_total)       sum_order_total, 
   sum(order_total_qty)   sum_order_total_qty,
   WEEKOFYEAR(order_date) week,
   year(order_date)       year
from testTable 
where order_date >= '2015-01-01' --start_date
group by WEEKOFYEAR(order_date), year(order_date)
order by year, week; --order if necessary

推荐阅读