2011-11-08 67 views
0

我有兩個表:如何計算重複的條目在列

提供者:

PROV_NO  P_NAME 
---------- ---------- 
    P10   ANTEL 
    P20   BCORP 
    P30   CBIZ 

服務:

S_TYPE PROV_NO R_PRICE 
------- -------- --------- 
    1  P10  160 
    2  P10  180 
    3  P10  110 
    1  P20  190 
    2  P20  180 
    3  P20  150 
    4  P20  240  
    5  P20  195 
    1  P30  190 
    2  P30  210 

我試圖計算服務的每個供應商提供的數並顯示提供者名稱旁邊的每個計數。所以我想我的輸出是:

P_NAME  COUNT 
--------- -------- 
ANTEL  3 
BCORP  5 
CBIZ   2 

我嘗試:

select provider.p_name, count(distinct service.prov_no) 
from provider,service 
group by provider.p_name 

我已經嘗試了一些方法,但我似乎無法分開計數,使他們獨特的每個p_name。

謝謝。

回答

2

嘗試:

select p.p_name, count(*) 
from provider p 
join service s on p.prov_no = s.prov_no 
group by provider.p_name 

變化joinleft join如果要包括沒有服務供應商。

2

你缺少的連接條件,你需要刪除distinct

select provider.p_name, count(*) 
from provider,service 
where provider.prov_no = service.prov_no 
group by provider.p_name 
+0

他也需要一個'COUNT(*)',而不是'計數(不同prov_no)' - 否則計數始終返回爲1 –

+0

@Mark:謝謝.. – codaddict

0

你應該在你的查詢已經加入條件

select provider.p_name, count(distinct service.prov_no) 
from provider join service on provider.prov_no=service.prov_no 
group by provider.p_name