我有一张交易表 t1
在这样的Hive中:
store_id cust_id zip_code transaction_count spend
1000 100 123 3 50
2000 200 456 2 20
我试图使用下表计算一些指标:
SELECT
store_id,
zip_code,
SUM(transaction_count) OVER (PARTITION BY store_id, zip_code) / COUNT(*) OVER(PARTITION BY store_id, zip_code) AS avg_transactions,
SUM(spend) OVER(PARTITION BY store_id, zip_code)/SUM(transaction_count) OVER(PARTITION BY store_id, zip_code) AS avg_purchase
FROM
t1
GROUP BY
1, 2
Hive正在抛出一个错误
semanticexception无法将窗口调用拆分为组。至少有一个组只能依赖于输入列。表达式不在按键“spend”分组中
但是这个专栏 spend
与聚合函数(sum)一起使用,因此我不能按此列分组。如何修复此错误?
2条答案
按热度按时间9w11ddsr1#
嗯。我想你想要:
我不明白你为什么要用窗口函数。
pkbketx92#
窗口功能不需要
group by
. 你要么想要:注意,第一个表达式可以用
AVG()
.这将产生与原始表中相同数量的行。另一方面,如果您只希望每个商店有一行和邮政编码,则使用常规聚合函数
GROUP BY
: