MySql - выбор 10 лучших результатов для каждого пользователя - PullRequest
0 голосов
/ 09 июля 2020

У меня есть MySql ТАБЛИЦА с окончательными результатами каждого раунда в игре. В каждом раунде у каждого пользователя разный счет, как в обычных играх. Пользователь может играть каждый раунд только один раз, поэтому комбинация (idRound, idUser) будет уникальной.

Таблица выглядит следующим образом:

id: INT
idRound: INT, //id of round
idUser: INT, //id of user
score: INT // final score for that round

Я хочу получить список лучшие игроки. Как мы определяем, кто лучший?

Каждый игрок будет сравниваться по его 10 лучшим результатам в раундах. Таким образом, если он сыграл 20 раундов (каждый раунд имеет свой собственный счет), будут засчитаны только 10 его лучших раундов (наивысший результат), и игроки будут отсортированы DESC по этому SUM(score).

Не могли бы вы помочь мне с этим SELECT?

Спасибо

1 Ответ

0 голосов
/ 09 июля 2020

Вы можете продолжить, сделав что-то вроде этого:

SET @intRounds:=1;
SET @intPrevUser:=-1;

SELECT idUser, idRound, rank FROM
(

    SELECT *, IF(@intPrevUser = game.idUser, @intRounds := @intRounds+1, @intRounds := 1) AS rank, @intPrevUser := game.idUser
    FROM game
    ORDER BY idUser, score DESC
    
) AS ranked_table
WHERE ranked_table.rank <=10

Оцените каждый балл пользователя, а затем выберите только желаемые.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...