sql >> Database >  >> RDS >> PostgreSQL

hiërarchische som in PostgreSQL

In PostgreSQL kunt u recursieve CTE's (Common Table Expression) gebruiken om bomen in uw query's te laten lopen.

Hier zijn twee relevante links naar de documenten:

BEWERKEN

Aangezien er geen subselectie vereist is, werkt het misschien iets beter op een grotere dataset dan de zoekopdracht van 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. Postgres UTC-datumnotatie &tijdperk gegoten, tekeninversie

  2. postgresql volgende vraag over reeksen

  3. Wat is sneller:meerdere enkele INSERT's of één INSERT met meerdere rijen?

  4. script dat gegevens ophaalt uit een txt-bestand in de where-clausule