4

与えられた:

InsuranceCompanies(cid、名前、電話番号、住所)

医師(やった、名前、専門分野、住所、電話番号、年齢、CID)

患者(pid、名前、住所、電話番号、年齢、性別、CID)

訪問(vid、did、pid、date、description)

どこ:

cid - Insurance Company code
did - doctor code
pid - patient code
vid - code of visit

そしてタスク:(今年中の)訪問数が今年中のすべての医師の平均訪問数より少ない医師(did、name)を見つけます。

私の試みは:

SELECT  D.did, D. name
FROM    Doctor D,Visit V
WHERE   V.did = D.did   and   D.did = CV.did   and   CV.visits <
                (SELECT AVG ( CV.visits) 
                 FROM   (SELECT V1.did AS did,COUNT(V1.vid) AS visits
                         FROM   Visit V1
                         WHERE  V1.date LIKE '%2012' 
                         GROUP BY   V1.did) AS CV)
4

1 に答える 1

2

これまでで最も美しく、ユーザーフレンドリーなSQLコマンドビジュアレーターを共有してくれたBridgeに大いに感謝します!

Databse Exemple:http ://sqlfiddle.com/#!2/e85c7/3

ビューを使用したソリューション:

CREATE VIEW  ThisYear AS 
    SELECT v.pid,v.vid,v.did
    FROM Visits v
     WHERE v.date LIKE '%2012';

CREATE VIEW DoctorsVisitCount AS
    SELECT v.did, COUNT(v.vid) as c
    FROM ThisYear v
    GROUP BY v.did;

SELECT DISTINCT d.did,d.dname,dvc.c
FROM Doctors d,DoctorsVisitCount dvc
WHERE dvc.c < (SELECT AVG(dvc.c)
               FROM DoctorsVisitCount dvc);
于 2012-04-25T09:32:13.100 に答える