2015-12-11 36 views
0

我有三個表像ORG_DETAILS,DISTRICT_MASTER和WORKER_DETAILS ..兩個表中獲取的記錄數在SQL

我想的組織和有關人員數量的計數計數基於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

該查詢看起來有點奇怪,按照左連接屬性分組。但這並不一定是錯誤的。你正在這樣做,因爲od.district_id是可以爲空的,你想計算每個分區的所有細節,並計算無分區細節? –

回答

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; 

由於性能方面的原因,在之前沿着每個維度進行聚合,如果計數較高,則連接性能會更好。

+0

知道了,謝謝... – thiru

相關問題