WITH t AS (SELECT 1 AS id, NULL AS parent_id, 1 AS val FROM DUAL
UNION ALL
SELECT 2, 1, 1 FROM DUAL
UNION ALL
SELECT 3, NULL, 4 FROM DUAL)
SELECT RPAD ('*', (LEVEL - 1) * 2, '*') || id,
CONNECT_BY_ROOT id,
SUM (val) OVER (PARTITION BY CONNECT_BY_ROOT id) AS s
FROM t
CONNECT BY PRIOR id = parent_id
START WITH parent_id IS NULL;
ID ROOT S
1 3 2
**2 3 2
3 3 4