Я основал свой ответ на этом
Я бы отсортировал по убыванию по играм и использовал его рейтинг, а затем обернул ваш запрос вокруг этого.
Iизменено COUNT(*) as count
на COUNT(*) as cnt
во избежание путаницы, count
является ключевым словом SQL
Схема (MySQL v5.7)
CREATE TABLE test (
`game` INTEGER,
`winner` VARCHAR(5)
);
INSERT INTO test
(`game`, `winner`)
VALUES
(1, 'Mark'),
(2, 'Joe'),
(3, 'Mark'),
(4, 'Paula'),
(5, 'Paula'),
(6, 'Paula'),
(7, 'Joe'),
(8, 'Anna');
Запрос # 1
SELECT winner, COUNT(*) as cnt, MIN(rank) AS lastwon FROM
(
SELECT winner,
game,
@curRank := @curRank + 1 AS rank
FROM test, (SELECT @curRank := -1) r
ORDER BY game DESC
) ranking
GROUP BY winner
ORDER BY cnt;
Вывод
| winner | cnt | lastwon |
| ------ | --- | ------- |
| Anna | 1 | 0 |
| Joe | 2 | 1 |
| Mark | 2 | 5 |
| Paula | 3 | 2 |
Просмотр на БД Fiddle