Сообщение об ошибке: «TOK_ALLCOLREF не поддерживается в текущем контексте» при использовании вложенного выбора в hive2.3.3 - PullRequest
0 голосов
/ 27 ноября 2018

когда я использую вложенный выбор в улье, как этот

Select 
a.month,
a.day,
sum(a.pv)/count(a.*) 
from 
(Select month,day, remote_addr,count(1) as pv 
from ods_weblog_detail group by remote_addr,month,day) as a; 

, он возвращает сообщение об ошибке: «TOK_ALLCOLREF не поддерживается в текущем контексте».

, но когда я выбираю a.месяц, a.day и сумма (a.pv) / count (a. *) отдельно так:

Select 
sum(a.pv)/count(a.*) 
from 
(Select month,day, remote_addr,count(*) as pv from ods_weblog_detail group by remote_addr,month,day) as a;

ИЛИ это:

Select 
a.month,a.day 
from 
(Select month,day, remote_addr,count(*) as pv 
from 
ods_weblog_detail 
group by remote_addr,month,day) as a;

Оба утверждения дают мне правильный ответ. Так почему я не могу выбрать эти три (a.month, a.day и sum (a.pv) / count (a. *)) Вместе в одном утверждении?большое спасибо !!!

1 Ответ

0 голосов
/ 27 ноября 2018

В запросе отсутствует group by.

Select 
a.month,
a.day,
sum(a.pv)/count(a.*) 
from (select month,day, remote_addr,count(1) as pv 
      from ods_weblog_detail 
      group by remote_addr,month,day
     ) a
group by a.month,a.day

Запрос также можно упростить, как показано ниже.

select month,day,remote_addr
,sum(count(*)) over(partition by month,day,remote_addr)/count(*) over(partition by month,day) as res
from ods_weblog_detail 
...