不确定如何最好地为问题命名。
我有一张记录玩家获胜的表格。我需要查询有多少玩家有多少胜利。
这是一个示例数据库:https://www.db-fiddle.com/f/gCEKmtPQr7nvhiZDyexn9C/0 这是预期的结果:
wins, players_count
1, 1
2, 3
我有点迷路了。我可以轻松获得每个玩家的获胜次数(按 user_id 分组,其中 status='win' 并选择计数),但如何将这些结果分组到我的预期结果中?
谢谢!
最佳答案
- 您将需要使用带有
Group By
的两级选择查询。子选择查询也称为 Derived Table . - 在内部选择查询中,获取每个用户的总获胜数。
- 现在,在外部选择中,
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 |
关于MySQL - 按分组结果分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53072446/