sql-获取表中特定id的值的总和

bogh5gae  于 2021-06-24  发布在  Hive
关注(0)|答案(3)|浏览(289)

我有两张table

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 里做。

gtlvzcf8

gtlvzcf81#

这看起来像一个 left join :

select x.id, (x.value + coalesce(y.value, 0)) as value
from x left join
     y
     on x.id = y.id
wz1wpwve

wz1wpwve2#

您可以使用union all和group by尝试下面的选项-

SELECT id, SUM(value) Value 
FROM 
(
    SELECT id, value FROM X
    UNION ALL
    SELECT id, value FROM Y
) A
GROUP BY id
ffdz8vbo

ffdz8vbo3#

如果两个表都有不匹配的id列表,我们可以使用full outer join来获得结果。请考虑以下问题:

select x.id,NVL(x.value,0)+NVL(y.value,0) value from x full outer join y on x.id=y.id;

相关问题