2012-11-24 149 views
1

我试图做一个查询,但我不知道该怎么做。AVG COUNT查询

这些都是表:

Table Hospital   Table Doctor  Table Work 

    Hid Country   ic    Hid  ic 
    1  England   1     1  1 
    2  Spain   2     1  2 
    3  France   3     1  3 
    4  England   4     2  4 
    5  China   5     4  5 

结果,我想:

Country  Average of Doctors Working on that Hospitals of that Country 
    England  2 (the doctor with ic 1, 2, 3, and 4/number of hid) 
    Spain  1 
    France  0 
    China  0 

我想:

SELECT DISTINCT H.country, AVG(D.ic) 
FROM Hospital H, Doctor D 
WHERE H.hid IN 
     (SELECT W.hid 
     FROM Work W 
     WHERE W.ic IN 
       (SELECT COUNT(D.ic) 
       FROM D Doctor .... 
      ) 
    ) 
GROUP BY(H.country); 
+0

能否请您分享您查询? –

+0

我在西班牙看到一名医生,而不是在中国。 –

+0

是的,我的错误。 – tomss

回答

1

试试这个

select H.Country, count(W.ic)/count(distinct H.hid) as [Average] 
from Hospital as H 
    left outer join Work as W on W.Hid = H.Hid 
group by H.Country 

SQL FIDDLE

0

首先获得医生各医院的号码,然后得到的平均值是:

select country, avg(docs) as avg_doctors_working 
from (
     select country, h.hid, count(*) as docs, 
     from hospital h 
    left join work w on w.hid = h.hid 
    group by 1, 2) x 
group by 1;