【问题标题】:MySQL: select when count = sum & group byMySQL:当count = sum和group by时选择
【发布时间】:2015-06-11 12:46:39
【问题描述】:

我需要选择 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 => 不会被选中

但是 user_id = 1 将被选中 quiz_id = 3 因为他得到了 100%

预期结果:

quiz_id     user_id
  2            2
  3            1
  4            3
  6            5

注释:

  1. 测验可以由不同数量的不同用户进行 问题
  2. quiz_id、user_id 共同唯一(用户不能两次参加相同的测验)

谢谢,

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    您应该使用带有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 中指定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 2013-04-30
      相关资源
      最近更新 更多