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 に答える