Предполагается, что «12-й пользователь» означает пользователя с идентификатором 12:
В MySQL 8.0+ вы можете использовать dense_rank()
.
SELECT x.rating_index
FROM (SELECT r.user_id,
dense_rank() OVER (ORDER BY sum(r.score) DESC) rating_index
FROM quiz_rashad.rating r
GROUP BY r.user_id) x
WHERE x.user_id = 12;
Edit:
Для MySQL 5.7 вы должны использовать подзапросы, получая различное количество общих баллов, превышающее или равное общему баллу для пользователя с идентификатором 12.
SELECT count(DISTINCT x.score) rating_index
FROM (SELECT r.user_id,
sum(r.score) score
FROM quiz_rashad.rating r
GROUP BY r.user_id) x
WHERE x.score >= (SELECT sum(r.score)
FROM quiz_rashad.rating r
WHERE r.user_id = 12)