Step6 様々な問い合わせ方法(2)
STEP 6

様々な問い合わせ方法(2)

サンプルのAccessファイルを使用します。
このページの一番下からDBNew_Sample_Step6.zipをダウンロードして任意の場所で解凍してください。

1. 集約関数とGROUP BY

集約関数(Aggregate Function) とは、複数のデータ行を集約し、1つの値(結果)として返す関数
たとえば、生徒全体の平均点や合計点を求めたいときに使用されます。
📌つまり、SQLでExcelのような関数として使えます。

関数 説明
SUM() 合計値を算出 SELECT SUM(Height) FROM Students;
AVG() 平均値を算出 SELECT AVG(Height) FROM Students;
MAX() 最大値を取得 SELECT MAX(Height) FROM Students;
MIN() 最小値を取得 SELECT MIN(Height) FROM Students;
COUNT() データ件数をカウント SELECT COUNT(*) FROM Students; 📌慣習として(*)を使う

(1) Studentsテーブルに対して、Height(身長)の平均値を求める

この時、AS を使って列名を定義します。

SELECT AVG(Height) AS 平均身長 FROM Students;
結果のビュー(仮想表)
平均身長
165

(2) Grade(学年)ごとのHeight(身長)の平均値を求める

この時、GROUP BY を使ってGrade でグループ分けします。
📌GROUP BY は集約関数と共に使います。

SELECT Grade, AVG(Height) AS 平均身長 FROM Students
GROUP BY Grade;
結果のビュー(仮想表)
Grade 平均身長
1165
2164.666666666667
3165.333333333333
2. 副問い合わせ

あるテーブルに対して問い合わせを行ない、その結果を次の問い合わせに利用することを言います。

(1) 生徒の出身中学校を抽出する。

SELECT JHighName
FROM JHighs J
WHERE EXISTS(
SELECT *
FROM Students S
WHERE S.JHighID = J.JHighID);
結果のビュー(仮想表)
JHighName
北海道中学校
東北中学校
東海中学校
中国中学校
四国中学校

(2) 出身中学校として生徒がいない中学校を抽出する

SELECT JHighName
FROM JHighs J
WHERE NOT EXISTS(
SELECT *
FROM Students S
WHERE S.JHighID = J.JHighID);
結果のビュー(仮想表)
JHighName
関東中学校
近畿中学校
九州中学校

EXISTSを使うクエリは DISTINCT で書き換え可能なケースもありますが、

SELECT DISTINCT JHighName
FROM Students S, JHighs J
WHERE S.JHighID = J.JHighID;

NOT EXISTS を使うクエリは書き換えが困難で、「当てはまらない」 ものを抽出するのに有効です。


ファイル名 サイズ (KB) ダウンロード
DBNew_Sample_Step6.zip 22

戻る


© 2026 - Blazor 情処の味方

サポーターズ
Thread Light
An unhandled error has occurred. Reload 🗙