чтобы получить статистическую ценность игрока за последний месяц, я использую этот запрос:
SELECT COUNT(*) FROM test WHERE player='player1' AND statistic=0 AND time > DATE_SUB(now(), INTERVAL 1 MONTH)
Теперь я хочу, чтобы лучшие 10 игроков имели наибольшую ценность.
Пример:
player1 имеет значение 40 (из запроса выше)
player2 имеет значение 78 (из запроса выше)
player3 имеет значение 21 (из запроса выше)
Теперь рейтинг должен быть:
Но как я могу сортировать рейтинг? Потому что мне нужно значение запроса выше?
Спасибо
Это то, что вы хотите?
SELECT (@rn := @rn + 1) as ranking, p.*
FROM (SELECT player, COUNT(*) as cnt
FROM test
WHERE statistic=0 AND time > DATE_SUB(now(), INTERVAL 1 MONTH)
GROUP BY player
ORDER BY COUNT(*) desc
) p CROSS JOIN
(SELECT @rn := 0) params
LIMIT 10;