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)
谢谢
这可以通过条件聚合来完成.条件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)