最近遇到一个地区数据汇总的问题,地区下的地址呈树形结构,(简化结构)如A市下有B、C区,B区下有D、E街道。先要查询所有地区的人数(包括子区域),如A的人数=直属A的人数+B的人数+C的人数+D的人数+E的人数。C的人数=直属C的人数。
地址结构如图:
地区直属人数如下
查询结果如下
实现如下
WITH a AS(
SELECT 'A' 地址, 10 总人数, 8 正常人数, 2 欠费人数 FROM dual
UNION ALL
SELECT 'B', 20, 15, 5 FROM dual
UNION ALL
SELECT 'C', 30, 29, 1 FROM dual
UNION ALL
SELECT 'D', 40, 20, 20 FROM dual
UNION ALL
SELECT