Microsoft Access 掲示板

クエリの抽出について

2 コメント
views
4 フォロー

MT_testから、クエリの抽出条件で、質問です。

100点が1人だけのグループを抽出したい。
ここの掲示板を見て


In (select クラス from MT_test where [点数]=100)

上記のように記載したのですが、100しか抽出されません。

どのように記載するのでしょうか?

お手数ですが、ご教示をお願いします。画像1

hideki
作成: 2021/11/20 (土) 10:58:21
通報 ...
1

無理して一気にやろうとせずに、やりたいことを分解して、1つずつ実現するようにすればどうでしょう。

100点が1人だけのグループを抽出したい。

ということなので、まずは、グループ毎の100点の人数を取得するクエリを考えます。
下記のような集計クエリで取得できます。

画像1

結果は下記です。
画像1

このカウントが1のレコードを抽出したいのですから、カウントの抽出条件を1に設定します。
画像1

このクエリのSQL

SELECT MT_test.[クラス], Count(MT_test.点数) AS 点数のカウント
FROM MT_test
WHERE MT_test.点数=100
GROUP BY MT_test.[クラス]
HAVING Count(MT_test.点数)=1;

このクエリ(Q_100_1)とMT_testを結合すればご希望の結果になります。
画像1

クエリを一つに纏めたいなら、それぞれのSQLをサブクエリを使ってまとめて、整理すると下記のようなSQLになります。

SELECT
  MT_test.[クラス], MT_test.点数
FROM
  MT_test INNER JOIN 
  (SELECT [クラス]
   FROM MT_test
   WHERE 点数=100
   GROUP BY [クラス]
   HAVING Count(点数)=1
  ) AS Q1
  ON MT_test.[クラス] = Q1.[クラス];
2
hideki 2021/11/20 (土) 22:28:53 7cbc1@96514

ご丁寧にありがとうございました。
最初の方法でやります。スキルがないので。