从sql中的两个表中获取记录数

时间:2015-12-11 12:42:35

标签: sql

我有三个表,如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

我在计数中得到重复值,比如一个额外的组织数和工人数......

请帮助我...

谢谢.....

1 个答案:

答案 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;

出于性能原因,在之前沿着每个维进行聚合如果计数很高,则联接的效果会更好。