1

というわけで、これが私の現状です。

次の属性を持つテーブル「テスト」があります。

  • ID
  • 患者 ID (外部キー)
  • 結果
  • タイプ

特定のタイプのテストを実行した患者の数をカウントする必要があります (これは、Patient と Test の間の 1 - * の関係です)。

私はこのようにそれを解決しました:

SELECT COUNT(*) 
FROM Test 
WHERE (Type = 'GDS') 
GROUP BY PatientID;

そして今、それらの結果をグループ化する必要があります.. (「何人の患者が n 個のテストを行ったか」)

SELECT COUNT(*) 
FROM Test 
WHERE (Type = 'GDS') 
GROUP BY 
(
    SELECT COUNT(*) 
    FROM Test WHERE (Type = 'GDS') 
    GROUP BY PatientID
);

もちろん、私はそれを行う方法がわからないので、それは間違っています..そして、ウェブ上で何も見つけることができませんでした.

これは Visual Studio の SQL データベースです... JOINS が機能するかどうかはわかりません..もしあれば、どのように使用しますか?

4

3 に答える 3

3

これは宿題ですか?集計結果をフィルタリングできるようにするHAVING
句 を検索しています。

SELECT PatientID
FROM Test 
WHERE Type = 'GDS'
GROUP BY PatientID
HAVING COUNT(*) = n
于 2013-11-06T13:57:34.850 に答える
0

あなたの質問に答える:

特定のタイプのテストを実行した患者の数をカウントする必要があります (これは、患者とテストの間の 1 - * の関係です)。

これが解決策です:

SELECT COUNT(DISTINCT PatientID) FROM Test WHERE Type = 'GDS'

たとえば、次の場合:

ID | PatiantID | Type
1  | 71        | GDS
2  | 71        | FTP
3  | 53        | GDS

次に、上記のコードは を返します2。なぜなら、GDS テストを受けた患者が 2 人いるからです。

于 2013-11-06T13:58:12.693 に答える