MySQL:选择具有特定竞赛条目数的用户数

时间:2012-10-05 15:28:50

标签: mysql

我有三个(简化的)表格用于竞赛申请:

**user**
user_id    

**contest**
contest_id

**contest_entry**
contest_id
user_id

有几场比赛,每位用户可以参加一次比赛(创建一个contest_entry记录)。

到目前为止已有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 

等。

1 个答案:

答案 0 :(得分:2)

你可以写:

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
;

子查询为每个用户查找他们输入的竞赛数量;外部查询按该计数对用户进行分组,从而确定进入那么多竞赛的用户数。

(免责声明:未经测试。)