PostgreSQL में आप अपने प्रश्नों में पेड़ों पर चलने के लिए पुनरावर्ती CTE (कॉमन टेबल एक्सप्रेशन) का उपयोग कर सकते हैं।
डॉक्स में दो प्रासंगिक लिंक यहां दिए गए हैं:
संपादित करें
चूंकि किसी उप-चयन की आवश्यकता नहीं है, यह एरियन की क्वेरी की तुलना में बड़े डेटासेट पर थोड़ा बेहतर चल सकता है।
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;