0
每组的日期范围我有一定的日期和产品类型的表总和超过在蜂巢
Product Process_Date Prod_Count
A 2015-08-01 2
A 2015-09-03 2
A 2015-05-06 3
B 2014-01-01 4
B 2014-12-31 5
我想每一行计算,产品的条目从过去6个月计处理日期(包括process_date)。所以输出应该看起来像
Product Process_Date Count
A 2015-08-01 5
A 2015-09-03 7
A 2015-05-06 3
B 2014-01-01 4
B 2014-12-31 5
目前我在做自联接
SELECT
q.Product, q.Process_Date, SUM(Prod_Count) AS num_180days
FROM tableT p
INNER JOIN (
SELECT DISTINCT Product, Process_Date
FROM tableT
) q
ON p.Product = q.Product
WHERE Process_Date BETWEEN DATE_SUB(q.Process_Date, 180) AND q.Process_Date
GROUP BY q.Product, q.Process_Date;
此查询时间很长,因为表是相当大的。我想知道是否有替代使用窗口功能来做到这一点。
谢谢!
子查询似乎是不必要的。为什么你不能在tableT.Product和tableT.Process_Date上分组?子查询对于Hive中的性能来说是个坏消息。 –
@ chipmunkofdoom2你能否详细说明如何避免组的子查询? – Nitin
通过执行GROUP BY p.Product,p.Process_Date; '。子查询似乎没有做任何事情。它只是从tableT中提取不同的产品和Process_Dates,然后再回到tableT。这应该不会影响行数。加入'p.Product'和'p.Process_Date'应该会给你相同的结果。 –