我有三个表,例如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
我在计数中得到重复的值,例如,一个额外的组织计数和工人计数...。
请在这件事上给予我帮助...
谢谢你.....
解决问题的最简单方法是使用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;
出于性能方面的考虑,如果计数很高,则在连接之前沿着每个维度进行聚合会更好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句