1

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

这些是表格:

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

2 回答 2

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 小提琴

于 2012-11-24T10:55:20.357 回答
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;
于 2012-11-24T11:08:47.747 回答