To jest uproszczona wersja problemu, który napotykam w PostgreSQL.Hierarchiczna suma w PostgreSQL
mam następującą tabelę :
[IDINTEGER| VALUENUMERIC (10,2)| RODZICINTEGER]
Gdzie rodzica jest samodzielnym przedstawieniu FK do kolumny ID.
Definicja tabela:
CREATE TABLE A(ID INTEGER IDENTITY, VALUE NUMERIC(10,2), PARENT INTEGER)
ALTER TABLE A ADD CONSTRAINT FK FOREIGN KEY (PARENT) REFERENCES A(ID)
Ta prosta tabela pozwala na zdefiniowanie struktury danych drzewa arbitralnej głębokości. Teraz muszę napisać SQL (wolę nie używać po stronie PL-SQL po stronie serwera), który zgłasza dla każdego węzła, całkowitą wartość pod-drzewa "wiszącego" pod nim. Na przykład, w poniższej tabeli:
| ID | VALUE | PARENT |
-------------------------
| 1 | NULL | NULL |
| 2 | 3.50 | 1 |
| 3 | NULL | NULL |
| 4 | NULL | 3 |
| 5 | 1.50 | 4 |
| 6 | 2.20 | 4 |
Powinienem się następujący zestaw wyników:
| ID | Total-Value-of-Subtree |
| 1 | 3.50 |
| 2 | 3.50 |
| 3 | 3.70 |
| 4 | 3.70 |
| 5 | 1.50 |
| 6 | 2.20 |
Dla simplicitly, można założyć, że tylko węzły liściowe mają wartości, węzły non-leaf zawsze mieć wartość NULL w kolumnie VALUE. Czy istnieje sposób, aby to zrobić w SQL, nawet korzystając z rozszerzeń specyficznych dla PostgreSQL?