HIVE Объединение двух результатов запроса, когда один запрос является внутренним объединением с меньшим количеством строк - PullRequest
0 голосов
/ 03 октября 2018

У меня есть таблица (таблица 1), из которой мне нужно получить количество пользователей и создать процент от нее.Фоном является то, что в таблице есть данные о пользователях этой таблицы.Мне нужно получить процент от всех пользователей, которые имели определенное использование, которое получается только внутренним соединением с другой таблицей (таблица 2).

Table1AccountNumber     Table1WithJoinAccountNumber
1                       1 
2                       3
3                       4
4                       

Конечными результатами для расчетов с помощью такого инструмента, как Tableau, будет возможность сделать следующее со списком номеров счетов, которые также зависят от даты использования и других параметров.

COUNT(DISTINCT Table1WithJoinAccountNumber)/ Count(distinct Table1AccountNumber)
with source above = 3/4 = 75%

Моя борьба заключается в том, что я хочу связать два результата, чтобы я мог получить точный подсчет каждого номера счета, поскольку у внутреннего объединения будет меньше счетов в результатах.Это возможно?

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Вам необходимо присоединиться:

select  day, count(t2.accountid)/count(t1.accountid) as pct    
from (select distinct accountid, day from Table1AccountNumber) t1
     left join  
     (select distinct accountid, day from Table1WithJoinAccountNumber) t2
     on t1.accountid = t2.accountid and t1.day=t2.day
group by day
0 голосов
/ 03 октября 2018

Вы можете выполнить агрегирование до присоединения:

select t2.cnt * 1.0 / t1.cnt
from (select count(distinct accountid) as cnt from Table1AccountNumber) t1 cross join
     (select count(distinct accountid) as cnt from Table1WithJoinAccountNumber) t2;

Предположительно, счета во второй таблице известны, поэтому join не требуется.

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