У меня есть несколько таблиц, как:Выяснить процентное значение с помощью улей
Table_1:
+------------+--------------+
| Student_ID | Student_Name |
+------------+--------------+
| 000 | Jack |
| 001 | Ron |
| 002 | Nick |
+------------+--------------+
Table_2:
+-----+-------+-------+
| ID | Total | Score |
+-----+-------+-------+
| 000 | 100 | 80 |
| 001 | 100 | 80 |
| 002 | 100 | 80 |
+-----+-------+-------+
Table_3:
+-----+-------+-------+
| ID | Total | Score |
+-----+-------+-------+
| 000 | 100 | 60 |
| 001 | 100 | 80 |
| 002 | 100 | 70 |
+-----+-------+-------+
Expected_Output:
ID percent
000 70
001 80
002 75
Я создал таблицу улья раньше. Теперь я хочу придумать один HiveQL, чтобы получить ожидаемый результат из этих трех таблиц. То, что я имею в виду, чтобы сделать это, на мой запрос я буду:
- использовать левое внешнее соединение, используя ID
- найти сумму «Total» и «оценка» для каждого ID
- делят сумму «Оценка» по сумме «Всего», чтобы получить процент.
Я пришел с этим:
INSERT OVERWRITE TABLE expected_output
SELECT t1.Student_ID AS ID, (100*t4.SUM1/t4.SUM2) AS percent
FROM Table_1 t1
LEFT OUTER JOIN(
SELECT (ISNULL(Total,0) + ISNULL(Total,0)) AS ‘SUM2’, (ISNULL(Score,0) + ISNULL(Score,0)) AS ‘SUM1’
FROM t4
)ON (t1.Student_ID=t2.ID) JOIN Table_3 t3 ON (t3.ID=t2.ID);
И, я застрял в этой точке. Не знаете, как достичь результата. Любая идея, пожалуйста?
Спасибо! Если у меня есть нулевое значение в любом столбце, могу ли я заменить его на 0 в этом методе? – Tanvir
уверен, что вы можете использовать 'isnull', как вы это делали в своем запросе. –
Большое спасибо! – Tanvir