我有两个表,“分析师”,其中包含所有名称,“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
谢谢
答案 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