sql >> Databáze >  >> RDS >> PostgreSQL

hierarchický součet v PostgreSQL

V PostgreSQL můžete použít rekurzivní CTE (Common Table Expression) k procházení stromů ve vašich dotazech.

Zde jsou dva relevantní odkazy na dokumenty:

UPRAVIT

Vzhledem k tomu, že není vyžadován žádný podvýběr, může to běžet o něco lépe na větší datové sadě než Arionův dotaz.

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. Uspořádání sloupců tabulky MySql pomocí Pythonu

  2. Jak funguje SET ROWCOUNT v SQL Server

  3. Chyba Pgsql:Možná budete muset přidat přetypování explicitního typu

  4. Načítání výpisu v kódování UTF-8 do MySQL