【发布时间】:2023-02-12 02:34:35
【问题描述】:
考虑这个测试数据:
CREATE TABLE IF NOT EXISTS area (
id integer,
parent_id integer,
name text,
population integer
);
INSERT INTO area VALUES
(1, NULL, 'North America', 0),
(2, 1, 'United States', 0),
(3, 1, 'Canada', 39),
(4, 1, 'Mexico', 129),
(5, 2, 'Contiguous States', 331),
(6, 2, 'Non-contiguous States', 2);
| id | parent_id | name | population |
|---|---|---|---|
| 1 | NULL | North America | 0 |
| 2 | 1 | United States | 0 |
| 3 | 1 | Canada | 39 |
| 4 | 1 | Mexico | 129 |
| 5 | 2 | Contiguous States | 331 |
| 6 | 2 | Non-contiguous States | 2 |
请注意,population(以百万为单位)在这里表示增加的人口,不包括该地区的儿童。
如何查询每一行的递归和?我需要得到这样的东西:
| name | sum |
|---|---|
| North America | 501 |
| United States | 333 |
| Canada | 39 |
| Mexico | 129 |
| Contiguous States | 331 |
| Non-contiguous States | 2 |
【问题讨论】:
标签: postgresql common-table-expression recursive-query