улучшил:
SELECT
G1.ID ID ,G1.NAME NAME,
SUM(
CASE WHEN G1.LEFTBOUND BETWEEN G2.LEFTBOUND AND G2.RIGHTBOUND THEN 1
ELSE 0
END) LEV
FROM GOOD G1
LEFT JOIN GOOD G2 ON NOT(G1.ID=G2.ID)
LEFT JOIN GOOD GI1 ON (G1.LEFTBOUND BETWEEN GI1.LEFTBOUND AND GI1.RIGHTBOUND)
LEFT JOIN GOOD GI2 ON (G2.LEFTBOUND BETWEEN GI2.LEFTBOUND AND GI2.RIGHTBOUND)
WHERE
((GI1.PARENT=GI2.PARENT) OR ((GI1.PARENT IS NULL)AND(GI2.PARENT IS NULL))) AND
(NOT(GI1.ID=GI2.ID) OR (G1.ID=GI1.ID) OR (G2.ID=GI2.ID))
GROUP BY G1.ID, G1.NAME
ORDER BY
SUM(
CASE
WHEN G2.LEFTBOUND BETWEEN G1.LEFTBOUND AND G1.RIGHTBOUND THEN 1
WHEN G1.LEFTBOUND BETWEEN G2.LEFTBOUND AND G2.RIGHTBOUND THEN 0
WHEN (GI1.ISGROUP>GI2.ISGROUP) THEN 1
WHEN (GI1.ISGROUP<GI2.ISGROUP) THEN 0
WHEN (GI1.NAME<GI2.NAME) THEN 1
ELSE 0
END) DESC