Проблема с запросами Hive Rank - PullRequest
0 голосов
/ 24 июня 2018
select season,violation_code, cnt, 
       RANK() over (Partition BY season order by cnt desc) AS rank 
  from
    (  select season,violation_code, 
              count(*) as cnt 
         from  ParkingViolations_seondary 
     group by season,violation_code
    ) tmp
where rank <= 3

Я новичок в Улей.Может кто-нибудь помочь мне, что не так с вышеупомянутым запросом?Выдает следующую ошибку:

Ошибка при компиляции оператора:

FAILED: SemanticException [Ошибка 10004]: строка 4: 6 Недопустимый псевдоним таблицы или ссылка на столбец 'rank': (возможно)Имена столбцов: сезон, код нарушения, cnt)

Любая быстрая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

Да, я также смог заставить его работать со следующим:

ВЫБРАТЬ * ОТ (ВЫБРАТЬ сезон, код нарушения, cnt, RANK () более (Partition BY сезон ORDER BY cnt DESC) КАК частота с FROM (ВЫБЕРИТЕ сезон, код нарушения, COUNT (*) как cnt ОТ ParkingViolations_seondary ГДЕ (код нарушения <> 0) и (street_code1 <> 0 или street_code2 <> 0 или street_code3 <> 0) GROUP BY сезон, код_подключения) TMP) TMP1 ГДЕ частота <=3; </p>

0 голосов
/ 24 июня 2018

Используйте подзапрос, чтобы иметь возможность обратиться к rank в предложении where:

select season, violation_code, cnt, rnk
from
( select season,violation_code, cnt, 
         RANK() over (Partition BY season order by cnt desc) AS rnk
    from
        (  select season,violation_code, 
                count(*) as cnt 
             from  ParkingViolations_seondary 
         group by season,violation_code
        ) tmp
)s
where rnk <= 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...