私は周りをよく見ましたが、私のものと一致する質問を見つけることができませんでした. 検索などで適切な言語を使用していない可能性がありますが、ここに行きます。
私はこのようなクラスと呼ばれるSQLテーブルを持っています
Student_Name | Class
--------------------
Edgar | Chemistry
Allan | Chemistry
Burt | Chemistry
Edgar | Math
Sue | Math
Hamilton | Math
Edgar | English
Sue | English
Edgar | German
Ben | German
数学とドイツ語の両方を取っている学生の数を数えたい.
この例では、次のことを前提としています。 - 生徒の名前は一意です。 - 1 人の生徒が複数のクラスを持つことができます。
論理的には、select ステートメントを使用して、数学を受講している学生の結果セットを取得します。次に、結果セットから各 Student_Name を調べてテーブルと照合し、ドイツ語を学んでいる学生の数を確認します。
この場合、Edgar だけが数学とドイツ語の両方を取っているので、1 が返されると予想します。
これまでに試したクエリのいくつかを次に示します:-(
これは、DISTINCT に関するいくつかの調査を行った後のものです。
SELECT COUNT(DISTINCT Student_Name) FROM Classes WHERE Class = 'Math' AND Class = 'German';
そして、これは GROUP BY について詳しく調べた後のものです。
SELECT COUNT(*) FROM (
SELECT DISTINCT Student_Name FROM Classes
WHERE Class IN ( 'Math', 'German' )
GROUP BY Student_Name
);
これらのどちらもまったく正しくありませんでした。どんな助けでも大歓迎です。