【发布时间】:2015-07-27 17:11:28
【问题描述】:
我有两张桌子。 TABLE1 有列:
pers_key
cost
visit
TABLE2 有列:
pers_key
months
首先,我创建一个临时表:
CREATE TABLE temp_table as
SELECT pers_key,SUM(cost) AS sum_cost, COUNT(DISTINCT visit) AS visit_count
FROM TABLE1
GROUP BY pers_key;
然后,我创建 TABLE3:
CREATE TABLE TABLE3 as
SELECT A.pers_key,
B.sum_cost/A.months AS ind1,
B.visit_count/A.months AS ind2
FROM TABLE2 AS A, temp_table AS B
WHERE A.pers_key = B.pers_key
我想知道这里是否有更好的方法来实现相同的结果。是否可以在一个查询中执行此操作而无需完全创建 temp_table?也许是这样的:
CREATE TABLE TABLE3 as
SELECT A.pers_key,
(SUM(B.cost)over (partition by B.pers_key))/A.months AS ind1,
(COUNT(B.visit)over (partition by B.pers_key))/A.months AS ind2
FROM TABLE2 AS A, TABLE1 AS B
WHERE A.pers_key = B.pers_key
还是需要临时表才能达到想要的结果集?
【问题讨论】:
-
您是否尝试过使用联合来组合它们。 IE。 select Col1, Col2 from table1 union select Col1, Col2 from table2.
标签: sql group-by hive aggregate-functions hiveql