在MySQL group by中不满足条件时显示计数0

在MySQL group by中不满足条件时显示计数0,mysql,sql,Mysql,Sql,样本记录: examid setcode answer ------- -------- -------- 10 A A 10 A B 10 A X 10 B A 10 B B 10 B C 我试图通过设置码找到计数

样本记录:

examid      setcode     answer
-------     --------   --------
10            A           A
10            A           B
10            A           X
10            B           A
10            B           B
10            B           C
我试图通过设置码找到计数组,答案是X。 我尝试了以下查询:

SELECT setCode,COUNT(answer) FROM mcq_answer WHERE examid=10 AND answer='X' GROUP BY setCode
此操作将返回以下结果:

setcode     count
-------     -------- 
A            1  
但我在寻找以下信息:

setcode     count
-------    -------- 
  A           1 
  B           0 

设置代码在这里是动态的。我只提到了A和B。可能会有更多的设置,如C、D、E、F等。我怎么做。我使用的是MySQL,你可以使用下面的查询

SELECT  C.setCode ,
    SUM(CASE WHEN B.setcode IS NULL THEN 0
             ELSE 1
        END) AS answer
FROM    ( SELECT    A.setCode ,
                COUNT(1) AS cnt
      FROM      mcq_answer A
      GROUP BY  A.setCode
    ) C
    LEFT JOIN mcq_answer b ON C.setcode = B.setcode
                              AND B.answer = 'X'
 GROUP BY  C.setCode
如果要获得以下结果,可以使用SUM+:

SELECT `setCode`, SUM(if (`answer`='X', 1,0)) as answer 
FROM `mcq_answer`
WHERE examid=10
GROUP BY `setcode`
尝试:


它也适用于setcode的动态值集。

setcode在这里是动态的。我只提到了A和B。可能会有更多的设置,如C、D、E、F等。对不起,我没有提到。我已经编辑了我的问题@Hasmukh Viradiyat该查询也适用于动态设置代码。你试过这个问题吗?我没有查询像A和B这样的固定集合码,每个集合码总共有80行,其中集合码A包含2个“X”答案,集合码B包含4个“X”答案,集合码C没有“X”答案。查询返回以下结果:对于设置代码A,计数为160;对于设置代码B,计数为320;对于设置代码C,计数为0。我认为总行数乘以每个setocode@Hasmukh Viradiya的计数
SELECT A.setcode, 
COUNT(CASE WHEN B.answer ='X' THEN B.answer ELSE NULL END) as count_x
FROM
(SELECT DISTINCT setcode FROM YOUR_TABLE) A
LEFT JOIN
YOUR_TABLE B
ON A.setcode = B.setcode
GROUP BY A.setcode;