合并两个表并求和

xoshrz7s  于 2021-07-13  发布在  Hadoop
关注(0)|答案(1)|浏览(414)

我的目标是合并两个表,其中一些id可能存在于一个表中,而不存在于另一个表中。如果id和年份相同,则应将金额相加。

Table 1:
ID   Year  Amount
111  2010  10.50
111  2011  5
123  2010  6
124  2010  8

Table 2:
ID  Year  Amount
111 2010  10
124 2011  10
125 2011  5

Output:
ID   Year  Amount
111  2010  20.50
111  2011  5
123  2010  6
124  2010  8
124  2011  10
125  2011  5

我打算先把两张table合并起来:

select *
from schema.table1
UNION ALL
select *
from schema.table2

但这只让我离目标有点近。当我做case语句时,我能做一个union all和一个sum吗?

select ID, year, sum(a.year + b.year)
from schema.table1 a
UNION ALL
from schema.table2 b
tzdcorbm

tzdcorbm1#

可以使用子查询:

select id, year, sum(amount)
from ((select *
       from schema.table1
      ) union all
      (select *
       from schema.table2
      )
     ) t12
group by id, year;

你也可以使用 full join ,但有 coalesce() 学生:

select coalesce(t1.id, t2.id), coalesce(t1.year, t2.year),
       (coalesce(t1.amount, 0) + coalesce(t2.amount, 0))
from schema.table1 t1 full join
     schema.table2 t2
     on t1.id = t2.id and t1.year = t2.year;

相关问题