- Вам нужно будет использовать двухуровневые запросы выбора с
Group By
. Запрос на дополнительный выбор также называется Производная таблица .
- Во внутреннем запросе на выборку получите общее количество побед на пользователя.
- Теперь, во внешнем выборе,
Group By
на общее количество побед и подсчитайте пользователей для них.
Попробуйте следующее:
SELECT
dt.total_wins AS wins,
COUNT(*) AS players_count
FROM
(
SELECT
user_id,
COUNT(*) AS total_wins
FROM a
WHERE status = 'win'
GROUP BY user_id
) AS dt
GROUP BY dt.total_wins
Схема (MySQL v5.7)
CREATE TABLE a (status VARCHAR(255), user_id int);
INSERT INTO a (status, user_id)
VALUES ('win', 1),
('win', 2),
('win', 3),
('win', 2),
('win', 4),
('win', 4),
('win', 1),
('not win', 1);
Результат запроса
| wins | players_count |
| ---- | ------------- |
| 1 | 1 |
| 2 | 3 |
Посмотреть на БД Fiddle