algorithm - Finding recursive sum in SQL statement -
i've 2 tables , b like: a (id, dep_id)
, b (id, amount)
the data in tables this
a b id dep_id id amount --- ------- ---- -------- 1 2 1 100 2 3 2 200 3 null 3 300 4 null 4 400
the id
column in table holds id
table b. given id
in table a, there might dep_id
holds id
of table b.
the requirement calculate sum of amount of entry in b , of dependent entries. has done in 1 single sql query. can't use pl/sql block that. idea how that.
example:
sum(id=1) = 100(id=1,dep_id=2) + 200(id=2,dep_id=3) + 300(id=3) = 600
you can use connect root
build link of dependency (hierarchical query), aggregate:
sql> select id, sum(amount) 2 (select connect_by_root(a.id) id, b.amount 3 4 join b on a.id = b.id 5 start a.id = 1 6 connect prior a.dep_id = a.id) 7 group id; id sum(amount) ---------- ----------- 1 600
additional solutions available on similar more complex schema (for example id:1
needs 4xid:2
, needs 8xid:3
each) on this sql quiz on plsqlchallenge.
Comments
Post a Comment