PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

suma hierarchiczna w PostgreSQL

W PostgreSQL możesz używać rekurencyjnych CTE (Common Table Expression) do chodzenia po drzewach w zapytaniach.

Oto dwa odpowiednie linki do dokumentów:

EDYTUJ

Ponieważ nie jest wymagany podwybór, może działać trochę lepiej na większym zbiorze danych niż zapytanie Ariona.

WITH RECURSIVE children AS (
    -- select leaf nodes
    SELECT id, value, parent
        FROM t
        WHERE value IS NOT NULL
    UNION ALL
    -- propagate values of leaf nodes up, adding rows 
    SELECT t.id, children.value, t.parent
        FROM children JOIN t ON children.parent = t.id
)
SELECT id, sum(value) 
    FROM children 
    GROUP BY id   -- sum up appropriate rows
    ORDER BY id;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak Cosd() działa w PostgreSQL

  2. Na czym polega problem z usunięciem wiersza z bazy danych?

  3. PostgreSQL porównuje dwa obiekty jsonb

  4. Django Postgres ArrayField a relacja jeden-do-wielu

  5. Jak zaimplementować wyszukiwanie pełnotekstowe w języku chińskim w PostgreSQL?