以下是一个示例表:
quizzes
id user_id quiz_id has_passed attempts
1 101 201 0 5
2 101 202 1 1
3 102 201 1 3
4 103 203 1 2
我想要结合两个查询来获取失败的测验尝试次数。
第一个查询获取每个测验的所有尝试的总和:
SELECT quiz_id, SUM(attempts) as sum
FROM quizzes
GROUP BY quiz_id
第二个查询计算测验传递的次数:
SELECT quiz_id, COUNT(*) as count
FROM quizzes
WHERE has_passed =1
GROUP BY quiz_id
我想从总数尝试中减去通过quiz_id分组的失败尝试次数的总次数。
什么查询会给我一个看起来像这样的输出?
quiz_id failed_attempts
201 7
202 0
203 1
谢谢!
答案 0 :(得分:5)
SELECT quiz_id, SUM(attempts - has_passed) failed_attempts
FROM quizzes
GROUP BY quiz_id
输出
| QUIZ_ID | FAILED_ATTEMPTS |
-----------------------------
| 201 | 7 |
| 202 | 0 |
| 203 | 1 |
<强> sqlfiddle 强>
答案 1 :(得分:1)
你可以写:
SELECT quiz_id,
SUM(attempts) - COUNT(CASE WHEN has_passed = 1 THEN 1 END)
AS failed_attempts
FROM quizzes
GROUP
BY quiz_id
;
答案 2 :(得分:0)
我认为你在寻找:
SELECT quiz_id, SUM(attempts) AS attempts, SUM(attempts-has_passed) AS failed_attempts
FROM quizzes
GROUP BY quiz_id
答案 3 :(得分:0)
尝试以下
选择quiz_id,(sum(尝试) - count(*))作为测验失败的尝试 按quiz_id分组