Hive Получение только максимального вхождения значения - PullRequest
0 голосов
/ 11 мая 2018

У меня есть таблица улья, в которой есть два cloumns, я хочу получить значение, которое произошло максимальное количество раз

Например, в моей таблице ниже значение встречалось дважды, а c - только один раз, здесь значение доминирует, поэтому мне нужно только значение, показанное в выводе

col1 col2
a a_value1
a a_value2
a c_value3
b b_value1

ВЫВОД:

col1 col2
a   a_value1
b   b_value1

1 Ответ

0 голосов
/ 11 мая 2018

Вы ищете то, что статистики называют режимом. Довольно простой метод - использовать агрегацию с оконной функцией:

select col1, col2
from (select col1, col2, count(*) as cnt,
             row_number() over (partition by col1 order by count(*) desc) as seqnum
      from t
     ) t
where seqnum = 1;

Приведенный выше запрос вернет одно значение для каждого col1, даже если есть связи. Если вам нужны все значения в случае связей, используйте rank() или dense_rank().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...