#sql #hive #sum
#sql #улей #сумма
Вопрос:
У меня есть 2 таблицы
X
-----------------
id | value
1 | 10
2 | 20
Y
----------------
id | value
2 | 30
затем вывод должен быть
result
-----------------
id | value
1 | 10
2 | 50 (20 30) from both the tables
Я должен сделать это в hive.
Комментарии:
1. Может
id
повторяться в любой таблице?
Ответ №1:
Это выглядит как left join
:
select x.id, (x.value coalesce(y.value, 0)) as value
from x left join
y
on x.id = y.id
Комментарии:
1. При таком подходе будут пропущены любые идентификаторы в таблице y, но не в x.
2. @Jabs . . . В заданном вопросе все идентификаторы в результирующем наборе находятся в таблице X. Самая простая интерпретация вопроса заключается в том, что это то, чего хочет OP. Возможно, вы правы, но вам следует задать это как вопрос оператору.
Ответ №2:
Вы можете попробовать этот приведенный ниже вариант с ОБЪЕДИНЕНИЕМ ВСЕХ и ГРУППИРОВАНИЕМ ПО-
SELECT id, SUM(value) Value
FROM
(
SELECT id, value FROM X
UNION ALL
SELECT id, value FROM Y
) A
GROUP BY id
Ответ №3:
Если обе таблицы имеют несовпадающий список идентификаторов, мы можем использовать полное внешнее объединение для получения результатов. Пожалуйста, рассмотрите приведенный ниже запрос:
select x.id,NVL(x.value,0) NVL(y.value,0) value from x full outer join y on x.id=y.id;