【发布时间】:2021-04-22 07:52:34
【问题描述】:
我有一个预订酒店的数据集。 date_in 的格式为“yyyy-MM-dd”。我需要按月选择前 10 家访问量最大的酒店。
SELECT top_visits.date_ci, top_visits.hotel_id, top_visits.count_visits
FROM (
SELECT date_ci, hotel_id, COUNT(id) AS count_visits,
RANK() OVER (
PARTITION BY date_ci, hotel_id ORDER BY COUNT(id) DESC) as rank
FROM (
SELECT id, hotel_id, SUBSTRING(my_tab.date_in, 1, 7) as date_ci
FROM my_database.my_tab) x
) top_visits
GROUP BY date_ci, hotel_id HAVING rank <= 10;
我收到以下错误:
错误:编译语句时出错:FAILED: SemanticException 未能将窗口调用分解为组。至少1组 必须只依赖于输入列。还要检查循环 依赖关系。潜在错误: org.apache.hadoop.hive.ql.parse.SemanticException:第 4:13 行 表达式不在 GROUP BY 键 'hotel_id' 中
【问题讨论】:
-
PARTITION BY date_ci, hotel_id ORDER BY COUNT(id) DESC) as rank->PARTITION BY date_ci ORDER BY COUNT(id) DESC) as rank
标签: sql hive hiveql window-functions aggregation