assembly_bom (parent_part, child_part, qty) is a bill of materials: one parent_part uses qty of child_part, and a child can be an assembly itself. part_costs (part, unit_cost) has the purchase cost of the parts that are bought rather than assembled.
Compute the rolled-up cost of every assembly — every part that appears as a parent_part: the total cost of all the bought parts that go into one unit of it, each times the quantity actually used. If any bought part in an assembly has no cost in part_costs, the assembly's cost is unknown: return NULL for it rather than a partial total. BOMs in the hidden data are deeper than this sample.
Columns: part, rolled_cost (rounded to 2 decimal places). Sort by part.