У меня есть такая таблица в улье
user_id no.of game_plays
u1 52
u2 190
u10 166
u9 100
u3 90
u4 44
u5 21
u7 10
u8 5
Выше приведен очень маленький образец данных.
Итак, общее количество игровых_игр составляет 678
Я хочу рассчитать пользователей в каждой группе, как показано ниже
who contribute to top 33.3% of total game_plays and
who contribute to between 33.3% and 66.6% of total game_plays
who contribute to bottom 33.3% of total game_plays
По сути, разделить данные на 3 группы, как указано выше, и получить 20 лучших пользователей из каждой группы.
Я знаю логику того, как реализовать в BigQuery, например .... получить значение процентиля, упорядоченное game_plays, а затем поместить выражение case в вышеупомянутый запрос и ранжировать, используя game_plays в каждой группе, и выбрать rank <= 20 </p> * 1016.* которые дают желаемый результат.
Я не знаю, как реализовать подобные вещи в улье.
Я просмотрел страницы ниже, но не понял
Как реализовать процентиль в Hive?
Как рассчитать медиану в Hive
И прошли по ссылке на функции ниже:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types
Я знаю, что должен использовать процентиль ... но кнне совсем точно, как я реализую.
Ниже приведен код, который я пробовал,
select a.user_id,a.game_plays, percentile(a.game_plays,0.66) as percentile
from (
select user_id, sum(game_plays) as game_plays
from game_play_table
where data_date = '2019-06-01'
group by user_id) a
Я знаю, что приведенный выше код не дает точного результата, но после написания внешнего запроса черезэто .... Я могу получить вывод, который я хотел .... но вышеупомянутый вывод запроса сам по себе сильно отличается.
Может кто-нибудь, пожалуйста, помогите ???