下面是一个没有 CASE 声明: 在你拿到你的 wins_per_user 只需数一数 user_ids ,和分组依据 wincount 再一次:
SELECT
wincount AS WinCount, count(user_id) as UserCount
FROM
(SELECT
count(*) as wincount, user_id
FROM a
where status='win'
GROUP BY user_id) as wins_per_user
GROUP BY wincount
您需要将两级select查询用于 Group By . 子选择查询也称为派生表。 在内部select查询中,获取每个用户的总wins数。 现在,在外部选择中, 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);
2条答案
按热度按时间mlnl4t2r1#
下面是一个没有
CASE
声明:在你拿到你的
wins_per_user
只需数一数user_ids
,和分组依据wincount
再一次:结果
ahy6op9u2#
您需要将两级select查询用于
Group By
. 子选择查询也称为派生表。在内部select查询中,获取每个用户的总wins数。
现在,在外部选择中,
Group By
在总的胜利,并计算用户为他们。请尝试以下操作:
架构(mysql v5.7)
查询结果
db fiddle视图