2017-06-02 6 views
0

私は2つのテーブルを1つの予定と1つの医師のために用意しています。専門分野に基づいた診断の平均カウントを取得しているSQL

医師のテーブルに保存されている各専門分野の平均患者数を選択します。患者が診断を受けている場合、予定表には患者のIDと診断が表示されます。

私はこれを試しましたが、動作しません。

SELECT AVG(patientAMKA) 
    FROM appointments 
WHERE diagnosis IS NOT NULL 
GROUP 
    BY doctor.specialty 

EDIT:患者のIDは患者のIDであることを明確にしたいと思います。 EDIT2:具体的に何人の患者(診断あり)が存在しているのかを具体的に表し、その平均をとっています。それはようなものになるだろうよう

+3

は参照してください:[なぜ私はMCVEを提供する必要があります私は非常にシンプルなSQLクエリであると思われますか?](https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-非常にシンプルなSQLクエリ) – Strawberry

+0

'patientAMKA'とは何ですか?多分数を平均しなければならないようですが、私はそれが 'patientAMKA'が何ではないと推測しています。 –

+0

「各専門分野の平均患者数」には、いくつかの異なる意味があります。(A)1つの数字:各スペキュリティに何人の患者(診断あり)が存在するかを調べ、それらの平均をとってください。 (B)専門分野ごとの数:各専門分野内で、各医師が何回診断を行ったかを見つけ、それらの平均を見つけます。あなたが質問にした言い方は(A)のように聞こえますが、(B)ははるかに価値のある質問です。あなたは完全に何かを意味するかもしれません! –

答えて

2

はサウンド:あなたの明確化に基づいて

SELECT d.specialty, COUNT(*) 
FROM doctor d 
INNER JOIN appointments a ON d.id = a.doctor_id 
WHERE diagnosis IS NOT NULL 
GROUP BY d.specialty 
+1

これはOPが望んでいるものではないことは間違いありませんが(非常に不明ですが)。私はこのコードが専門分野ごとの平均患者IDを計算すると思います。 @SteveLovell。 –

+0

私は同意する - 私はその部分も混乱していた。ここには2つの予定があるようですが、これはOPが持っている方法なので、間違っているとコメントします – kbball

+1

実際には、私は更新します...元々カウントしました – kbball

0
SELECT doc.specialty, AVG(app.patientAMKA) 
FROM doctor doc 
JOIN appointments app ON doc.doctorid = app.doctorid 
WHERE app.diagnosis IS NOT NULL 
GROUP BY doc.specialty 
+1

PrettyこれはOPが望んでいるものではないことは確かです(それは非常に不明ですが)。私はこのコードが専門分野ごとの平均患者IDを計算すると思います。 –

0

、私はあなたが何をしたいと考えています:

SELECT 
    AVG(CountOfDiagnoses) as TheAverage 
FROM 
    (
    SELECT 
     d.specialty, 
     COUNT(1) as CountOfDiagnoses 
    FROM 
     appointments a 
     JOIN doctor d ON 
      d.doctor_id = a.doctor_id 
    WHERE 
     a.diagnosis IS NOT NULL 
    GROUP BY 
     d.specialty 
    ) Counts 
関連する問題