SQL计数结果和连接

时间:2017-07-22 19:37:28

标签: mysql sql join count

我有两个表,“分析师”,其中包含所有名称,“master”表中包含所有结果。我试图计算每个名字的结果数量。表格示例如下:

分析师表

id      analyst 
----------------
1       name1
2       name2
3       name3

主表

id      analyst    result
--------------------------
1       name1      passed
2       name2      failed
3       name1      passed

我目前有以下内容

SELECT result, COUNT(*) as Count FROM master GROUP BY Result;

这让我回答:

result     Count
-----------------
passed      2
failed      1

如何使用join返回如下结果:

analyst     passed     failed
------------------------------
name1        2          0
name2        0          1
name3        0          0

谢谢

1 个答案:

答案 0 :(得分:5)

这可以通过条件聚合来完成。 sum中的条件返回1表示true,0表示false。

select analyst, sum(result='passed') as passed, sum(result='failed') as failed
from master
group by analyst

如果应该为分析师表中的所有分析师显示结果,请使用

select a.analyst
,coalesce(sum(m.result='passed'),0) as passed
,coalesce(sum(m.result='failed'),0) as failed
from analyst a
left join master m on a.analyst=m.analyst
group by a.analyst