我有一张如下表格
|date|dom|guid|pid|errors|QA|comm| |2010-03-22|xxxx.com|jsd3j234j|ab|Yes|xxxxxx|bad| |2010-03-22|xxxx.com|jsd3j234j|ab|No|xxxxxx|| |2010-03-22|xxxx.com|jsd3j234j|if|Yes|xxxxxx|bad| |2010-03-22|xxxx.com|jsd3j234j|if|No|xxxxxx|| |2010-03-22|xxxx.com|jsd3j234j|he|Yes|xxxxxx|bad| |2010-03-22|xxxx.com|jsd3j234j|he|No|xxxxxx||
我想检索每个“QA”的“dom”总数,还需要“QA”检测到的“错误”计数
SELECT date, count(dom), QA
FROM reports
WHERE date="2010-03-22"
GROUP BY QA
|2010-03-22|2|ab| |2010-03-22|2|if| |2010-03-22|2|he|
SELECT date, count(dom), count(errors), QA
FROM reports
WHERE errors="Yes"
GROUP BY QA
|2010-03-22|1|ab| |2010-03-22|1|if| |2010-03-22|1|he|
我想结合以上两个查询,是否有可能。
如果我使用以下查询,我无法获得所需的结果。
SELECT date, count(dom), QA, count(errors)
FROM reports
WHERE date="2010-03-22"
AND errors="Yes"
GROUP BY QA
我想要以下输出
|2010-03-22|2|ab|1| |2010-03-22|2|if|1| |2010-03-22|2|he|1|
答案 0 :(得分:1)
你可以这样做:
SELECT date, COUNT(dom), QA, COUNT(NULLIF(errors, 'No')) FROM reports WHERE date="2010-03-22" GROUP BY QA
解释其工作原理:COUNT
返回非空值的数量。我们可以通过将'No'
的错误转换为NULL
来使用此优势,因此COUNT
将不计算它们。我们使用NULLIF
函数执行此操作,如果第一个和第二个参数相等,则返回NULL
。
答案 1 :(得分:0)
尝试使用OR
代替AND
:
.... date="2010-03-22" OR errors="Yes" GROUP BY QA