MySQL:当count = sum&时选择通过...分组

时间:2015-06-11 12:46:40

标签: mysql sql

我需要选择user_id& quiz_id,对于他们的测验中的问题数量=正确总和的用户,这意味着他们回答100%正确

答案表:

quiz_id      question_id      user_id      answer_id      correct
1                1               1             1            1
1                2               1             6            0
1                3               1             9            1
2                1               2             1            1
2                2               2             5            1
3                4               1            17            1
3                5               1            21            1
3                6               1            25            1
4                1               3             1            1
5                4               4            18            0
6                1               5             1            1
6                2               5             5            1
7                1               3             2            0
7                2               3             7            0

前1: 用户1选择“quiz_id”= 1

“quiz_id = 1”中的问题数= 3

正确之和= 2

所以它不是100%

quiz_id = 1 =>中的user_id = 1不会选择

但是,如果quiz_id = 3,则选择user_id = 1,因为他得到了100%

预期结果:

quiz_id     user_id
  2            2
  3            1
  4            3
  6            5

注释:

  1. 可以与不同用户进行测验 问题
  2. quiz_id,user_id唯一(用户不能同时进行两次测验)
  3. 感谢,

1 个答案:

答案 0 :(得分:2)

您应该使用带HAVING子句的聚合查询:

SELECT quiz_id, user_id
FROM quiz_answer -- or whatever the name is
GROUP BY quiz_id, user_id
HAVING COUNT(question_id) = SUM(correct)

此处您必须使用HAVING代替WHERE,因为

  

HAVING子句可以引用聚合函数,即WHERE   条款不能

the docs中指定。