获取回复调查的用户数量

时间:2012-08-30 14:20:49

标签: mysql sql count group-by

我需要知道有多少用户回复了调查问卷。但他们可以回复一次或多次(在我的情况下,最多两次)。

所以我有两个表:fs_usersfs_surveys

fs_users:
  ID  | Name
  1     David
  2     John

fs_surveys:
  ID  | ID_User | Selected_Answer
  1     1         A
  2     1         C
  3     2         A

如果我在视觉上计算 响应调查的用户数量,我可以算2(David和John)。通过查询,我可以知道这些人的回应是谁。像:

SELECT 
  fs_users.ID, 
  fs_users.Name
FROM fs_users

INNER JOIN fs_surveys
  ON fs_surveys.ID_User = fs_users.ID

GROUP BY 
  fs_users.ID

它基本上会返回上面显示的fs_users数据的相同内容。所以,直到这里我很好。问题是我需要COUNT() 有多少用户,而不是用户

如果我只是将SELECT更改为:

SELECT
  COUNT(*)
...

我会收到这个:

result:
  COUNT(*) | INSTEAD_OF
  3          2

那么,我怎么能解决这个问题呢?再见!

4 个答案:

答案 0 :(得分:6)

SELECT COUNT(DISTINCT ID_User) FROM fs_surveys

sqlfiddle上查看。

答案 1 :(得分:4)

只需使用DISTINCT

SELECT COUNT(DISTINCT ID) FROM fs_users;

答案 2 :(得分:4)

使用COUNT(distinct columnName)代替COUNT(*)

答案 3 :(得分:2)

只需使用COUNT(DISTINCT fs_users.ID)来计算唯一值。