На последното ви запитване наистина имате два вида в едно. Родителите могат да сортират възходящо или низходящо, но децата могат само възходящо.
След като разгледах това, вярвам, че можете да получите решение с нещо подобно.
order by case
when depth = 0
then path
/*
secret function that always returns the
right numbers regardless of whether or not the sort is ascending.
*/
else XXX_function('DESC', path)
end desc;
Вярвам, че логиката е здрава, но трябва да разберете как да замените числата при сортиране в низходящ ред, тъй като нещата ще бъдат „с главата надолу“. (Може да обърнете позициите на масива)