У меня есть набор данных с подсчетами по штатам и округам, и я хотел бы рассчитать медиану и среднее по штатам и округам, например:
Имеет:
ID state county count
1 MD aa 2
2 MD aa 4
3 VA bb 1
4 VA bb 2
5 VA bb 4
6 VA cc 7
7 VA cc 8
Хотите:
![enter image description here](https://i.stack.imgur.com/9FboJ.png)
То, что у меня есть, дает ошибку:
Select id, STATE,COUNTY,count,
percentile(cast(count as BIGINT), 0.5) OVER() as overall_median,
round(avg(count),2) OVER() as overall_avg,
percentile(cast(count as bigint),0.5) OVER(PARTITION BY id,STATE) as med_state,
percentile(cast(count as bigint),0.5) as med_county,
AVG(count) OVER (PARTITION BY id, STATE) as avg_state,
AVG(count) AS avg_county,
from have
group by id, state, county
Ошибка получена, когда не используется группа:
ОШИБКА: Ошибка выполнения: org. apache .hive.service.cli.HiveSQLException: Ошибка при компиляции оператора: FAILED: SemanticException Не удалось разбить вызовы Windowing на группы. Как минимум 1 группа должна зависеть только от входных столбцов. Также проверьте наличие циклических зависимостей. Основная ошибка: org. apache .had oop .hive.ql.parse.SemanticException: строка 1: 457 Выражение отсутствует в ключе GROUP BY 'id'
Код без группы:
Select id, STATE,county,count,
percentile(cast(count as BIGINT), 0.5) OVER() as overall_median,
round(avg(count),2) OVER() as overall_avg,
percentile(cast(count as bigint),0.5) OVER(PARTITION BY id,STATE) as med_state,
percentile(cast(count as bigint),0.5) OVER(PARTITION BY id,STATE,county) as med_county,
AVG(count) OVER (PARTITION BY id, STATE) as avg_state,
AVG(count) OVER (PARTITION BY id, STATE, county) as avg_county,
from have
Спасибо!