Budgetedテーブル
task category est_cost
---- -------- --------
1 9100 100
2 9100 15
3 9100 6
4 9200 8
5 9200 11
Actualテーブル
voucher task act_cost
------- ---- --------
1 1 10
2 1 20
3 1 15
4 2 32
5 4 8
6 5 3
7 5 4
Budgetedテーブルのcategoryごとの、
est_costの合計と、
taskに紐づく、act_costの合計を出力する
出力結果
category est_cost act_cost
-------- -------- --------
9100 121 77
9200 19 15
create table Budgeted( task number(1) primary key, category number(4) not null, est_cost number(3) not null); insert into Budgeted values(1,9100,100); insert into Budgeted values(2,9100, 15); insert into Budgeted values(3,9100, 6); insert into Budgeted values(4,9200, 8); insert into Budgeted values(5,9200, 11); create table Actual( voucher number(1) primary key, task number(1) not null references Budgeted(task), act_cost number(2) not null); insert into Actual values(1,1,10); insert into Actual values(2,1,20); insert into Actual values(3,1,15); insert into Actual values(4,2,32); insert into Actual values(5,4, 8); insert into Actual values(6,5, 3); insert into Actual values(7,5, 4); commit;
select category,sum(a.est_cost) as est_cost,
sum(b.act_cost) as act_cost
from Budgeted a
Left Join (select task,sum(act_cost) as act_cost
from Actual
group by task) b
on a.task = b.task
group by category
order by category;
インラインビューで、集計して、 外部結合させてます