SQL计数结果和连接

Ant*_*ony 1 mysql sql join count

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

分析师表

id      analyst 
----------------
1       name1
2       name2
3       name3
Run Code Online (Sandbox Code Playgroud)

主表

id      analyst    result
--------------------------
1       name1      passed
2       name2      failed
3       name1      passed
Run Code Online (Sandbox Code Playgroud)

我目前在下面有这个

SELECT result, COUNT(*) as Count FROM master GROUP BY Result;
Run Code Online (Sandbox Code Playgroud)

这让我回答:

result     Count
-----------------
passed      2
failed      1
Run Code Online (Sandbox Code Playgroud)

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

analyst     passed     failed
------------------------------
name1        2          0
name2        0          1
name3        0          0
Run Code Online (Sandbox Code Playgroud)

谢谢

Vam*_*ala 5

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

select analyst, sum(result='passed') as passed, sum(result='failed') as failed
from master
group by analyst
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)