PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

йерархична сума в PostgreSQL

В PostgreSQL можете да използвате рекурсивни CTE (Common Table Expression), за да обхождате дърветата във вашите заявки.

Ето две подходящи връзки към документите:

РЕДАКТИРАНЕ

Тъй като не се изисква подизбор, може да работи малко по-добре при по-голям набор от данни от заявката на Arion.

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. сериен в postgres се увеличава, въпреки че добавих на конфликт не прави нищо

  2. Съвпадение на шаблони между множество колони

  3. Изчислете точната месечна разлика между две дати

  4. Дизайн на база данни за сдвояване, налагащо ограничения

  5. В PostgreSQL, как можем да разберем дали всеки индекс на таблица е групиран или не?