L'idée est de demander "combien de joueurs se classent au-dessus de @this_user":
select count(*) + 1 from
(
/* list of all users */
SELECT SUM( p.points ) AS sum_points
FROM user u
LEFT JOIN points p ON p.user_id = u.id
GROUP BY u.id
) x
/* just count the ones with higher sum_points */
where sum_points > (select sum(points) from points where user_id = @this_user)
Modifié pour que le résultat soit basé sur 1 au lieu de basé sur 0