MySQL:选择具有特定竞赛项目数的用户数
我有以下三个(简化)表格用于竞赛申请:MySQL:选择具有特定竞赛项目数的用户数,mysql,Mysql,我有以下三个(简化)表格用于竞赛申请: **user** user_id **contest** contest_id **contest_entry** contest_id user_id 有几个竞赛,每个用户可以参加一次竞赛(创建竞赛记录) 到目前为止已经有5场比赛,所以我想统计一下有多少用户参加了0、1、2、3、4或5场比赛。我正在寻找的格式示例如下: num_contests_entered num_users 0
**user**
user_id
**contest**
contest_id
**contest_entry**
contest_id
user_id
有几个竞赛,每个用户可以参加一次竞赛(创建竞赛记录)
到目前为止已经有5场比赛,所以我想统计一下有多少用户参加了0、1、2、3、4或5场比赛。我正在寻找的格式示例如下:
num_contests_entered num_users
0 102
1 87
2 345
3 254
4 567
5 489
我完全被实现这一点所需的SQL难住了,因此非常感谢您的帮助
最好的,
克里斯
编辑:为了澄清,我正在寻找的一个例子是
102 users entered 0 contests
87 users entered 1 contest
345 users entered 2 contests
等等你可以写:
SELECT num_contests_entered,
COUNT(1) num_users
FROM ( SELECT COUNT(ce.contest_id) num_contests_entered
FROM user u
LEFT
OUTER
JOIN contest_entry ce
ON ce.user_id = u.user_id
GROUP
BY u.user_id
) t
GROUP
BY num_contests_entered
ORDER
BY num_contests_entered
;
子查询为每个用户查找他们参加的竞赛数量;外部查询根据该计数对用户进行分组,从而确定参加那么多比赛的用户数量
(免责声明:未经测试。)@njk你说得对。嗯,克里斯,什么是0,1,2,3,4和5?修正了这个问题,我觉得有点模棱两可@njk好吧,你的小提琴表明它很管用!唯一缺少的部分(至于我的答案)是没有用户具有给定参与编号(在您的情况下为1和3)的行。这对我很有用,非常感谢!我现在将对它进行剖析,并了解一两件事:)@RaphaëlAlthaus我有时患有诵读困难症。