我有三个表,如ORG_DETAILS,DISTRICT_MASTER和WORKER_DETAILS ..
我想根据district_name计算组织数量和相关工作人员数量。这是我正在尝试的查询......
SELECT dm.DISTRICT_NAME ,
count(od.Org_ID)as orgcount,
count(wd.WORKER_ID)as workerscount
from ORG_DETAILS od
left join WORKER_DETAILS wd on wd.ORG_ID = od.ORG_ID
left join DISTRICT_MASTER dm on od.DISTRICT_ID = dm.DISTRICT_ID
GROUP BY dm.DISTRICT_NAME
我在计数中得到重复值,比如一个额外的组织数和工人数......
请帮助我...
谢谢.....答案 0 :(得分:2)
解决问题的最简单方法是使用count(distinct)
:
SELECT dm.DISTRICT_NAME ,
count(distinct od.Org_ID)a s orgcount,
count(distinct wd.WORKER_ID)as workerscount
from ORG_DETAILS od left join
WORKER_DETAILS wd
on wd.ORG_ID = od.ORG_ID left join
DISTRICT_MASTER dm
on od.DISTRICT_ID = dm.DISTRICT_ID
GROUP BY dm.DISTRICT_NAME;
出于性能原因,在之前沿着每个维进行聚合如果计数很高,则联接的效果会更好。