I think you'd either need to do this at during indexing :
Whenever you add a new child, re-index the parent having queried all of its children to find the lowest price.
Or with 2 queries at run time :
Get the parent, if price is null, get the min value of the children.