AVG COUNT查询

时间:2012-11-24 08:56:58

标签: sql dml

我正在尝试进行查询,但我不知道该怎么做。

这些是表格:

  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);

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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;