Ajuda para calcular a soma complexa no conjunto de dados hierárquico

Eu tenho um problema interessante de SQL. Eu tenho uma tabela hierárquica de peças que produz uma lista de materiais. semelhante a este:

ASSEMBLY
---------
parent_part_id
part_id
quantity

Eu recebo a hierarquia dessa estrutura com uma consulta como esta:

SELECT level, part_id, quantity
from assembly
start with parent_part_id = 1
connect by parent_part_id = prior part_id;

a saída pode ficar assim:

level  part_id  quantity
-----  -------  ---------
1      2        2
2      3        10
1      4        2
2      5        1    
3      3        5

Por enquanto, tudo bem.

a pergunta é a seguinte: como faço para calcular o número total de cada peça necessária para fazer a montagem de nível superior (parte 1)?

O agrupamento desse resultado definido por peça e a soma da quantidade não está correto, pois a quantidade deve ser multiplicada pela quantidade da peça imediatamente acima da peça atual na hierarquia, subindo a árvore recursivamente.

Eu estou pensando que esta é uma função LAG, mas com problemas para visualizá-la.

edit: resultados esperados:

part_id  quantity
-------  --------
2        2
3        30
4        2
5        2

mais editar: eu recebo resultados interessantes com esta consulta

SELECT rownum, level lvl, part_id, quantity, unit_of_measure
                , connect_by_isleaf || sys_connect_by_path(quantity,'*') math
            from assembly
            start with parent_part_id = 1
            connect by parent_part_id = prior part_id

a coluna matemática retorna uma representação em string do cálculo que eu quero executar :) por exemplo, pode-se dizer:

1*1*2*10

ou algo semelhante e apropriado ... talvez fazer uma função para analisar isso e retornar o resultado resolva o problema .. alguém acha isso ultrajante?

questionAnswers(2)

yourAnswerToTheQuestion