Как вариант, можно создать поле root_rating и хранить там либо рейтинг главного комментария ветки, либо сумму рейтинга комментариев в ветке. Тогда сортировка будет простая
order by comments.root_rating desc, comments.rgt desc
Но при каждом голосовании придется перезаписывать поле root_rating всей ветки.
Очень не хочется так делать, может кто-то предложит более правильный способ.
ПРАВИЛЬНОЕ РЕШЕНИЕ
Правильный способ - использовать with recursive. Пример успешного запроса:
WITH RECURSIVE r AS (
SELECT id, text, depth, lft, rgt AS _rgt, cached_votes_score AS rating
FROM comments AS c1
WHERE depth = 0
UNION ALL
SELECT c2.id, c2.text, c2.depth, c2.lft, c2.rgt, rating AS rating
FROM comments c2
JOIN r ON c2.parent_id = r.id
)
SELECT * FROM r ORDER BY rating desc, _rgt DESC;