Вы можете проверить оконные функции , если ваша версия MySQL их поддерживает ...
SELECT m.member_id AS member_id,
(SUM(c.vote_value) + SUM(c.best)*10) AS total,
RANK() OVER (ORDER BY (SUM(c.vote_value) + SUM(c.best)*10)) as ranking
FROM comments c
LEFT JOIN members m ON c.author_id = m.member_id
GROUP BY c.author_id
ORDER BY total DESC;
Другая возможность:
SELECT m.member_id AS member_id,
(SUM(c.vote_value) + SUM(c.best)*10) AS total,
(SELECT count(distinct <column you want to rank by>)
FROM comments c1
WHERE c1.author_id = m.member_id) as ranking
FROM comments c
LEFT JOIN members m ON c.author_id = m.member_id
GROUP BY c.author_id
ORDER BY total DESC;
Примечание: есть много открытых вопросов по этому поводу, но две вышеупомянутые методики - это простые методы для определения рейтинга в целом. Вы можете изменить вышеперечисленное в соответствии с вашими потребностями, так как я немного не уверен в том, что составляет ранг для member_id.