-1

私はSQLの初心者で、クエリを作成しようとしています。

私はこれらのテーブルを持っています:

CREATE TABLE Hospital (
    hid INT PRIMARY KEY,
    name VARCHAR(127) UNIQUE,
    country VARCHAR(127),
    area INT
);
CREATE TABLE Doctor (
    ic INT PRIMARY KEY,
    name VARCHAR(127),
    date_of_birth INT,
);
CREATE TABLE Work (
    hid INT,
    ic INT,
    since INT,
    FOREIGN KEY (hid) REFERENCES Hospital (hid),
    FOREIGN KEY (ic) REFERENCES Doctor (ic),
    PRIMARY KEY (hid,ic)
 );

質問は次のとおりです。その国の病院で働く医師の数の各国の平均は何ですか(1列目:各国、2列目:平均)?ありがとう。

4

1 に答える 1

0

まず、病院ごとに医師を数えるクエリを作成する必要があります

select w.hid, count(w.ic)
from work w
group by w.hid;

そのクエリに基づいて、国ごとの医師の平均数を取得できます。

with doctor_count as (
  select w.hid, count(w.ic) as cnt
  from work w
  group by w.hid
)
select h.country, avg(dc.cnt)
from hospital h
  join doctor_count dc on h.hid = dc.hid
group by h.country;

一般的なテーブル式をサポートしていない古いDBMSがある場合は、上記を次のように書き直すことができます。

select h.country, avg(dc.cnt)
from hospital h
  join (
    select w.hid, count(w.ic) as cnt
    from work 
    group by w.hid
  ) dc on h.hid = dc.hid;

SQLFiddleのデモは次のとおりです。http://sqlfiddle.com/#!12 / 9ff79 / 1

ところで:date_of_birth整数として保存するのは悪い選択です。実際のDATE列を使用する必要があります。

そしてwork、SQLで予約語です。これをテーブル名に使用しないでください。

于 2012-11-24T11:00:59.547 に答える