【Day38】SELECT文:WHERE・GROUP BY・HAVING・ORDER BY

投稿者: | 2025年9月16日

こんにちは!今回は、データベースの基本である SELECT文 をステップごとに解説します。
Excelで「並べ替え」や「集計」をしたことがある人は、そのイメージで読むと分かりやすいですよ😊


1. SELECT文の基本形

データベースから欲しい情報を取り出すときの基本はこれです。

SELECT 列名
FROM テーブル名;

たとえば「成績テーブル」から「名前」と「点数」を取り出すなら:

SELECT 名前, 点数
FROM 成績;

2. WHEREで条件をつける(絞り込み)

「数学の点数が70点以上の人だけ」みたいに条件をつけたいときは WHERE句 を使います。

SELECT 名前, 点数
FROM 成績
WHERE 点数 >= 70;

👉 Excelの「フィルタ機能」に近いイメージです。


3. GROUP BYでグループ分け

「学年ごとに平均点を出したい」ときなどは GROUP BY句 を使います。

SELECT 学年, AVG(点数) AS 平均点
FROM 成績
GROUP BY 学年;

👉 ピボットテーブルみたいに、集計をするときに活躍します。


4. HAVINGでグループに条件をつける

「学年ごとの平均点が80点以上の学年だけ知りたい」ときは HAVING句 を使います。

SELECT 学年, AVG(点数) AS 平均点
FROM 成績
GROUP BY 学年
HAVING AVG(点数) >= 80;

👉 WHEREは「個人」に対する条件、HAVINGは「グループ」に対する条件、という違いがあります。


5. ORDER BYで並べ替え

最後に、結果を 並べ替える のが ORDER BY句 です。

SELECT 名前, 点数
FROM 成績
ORDER BY 点数 DESC;

👉 点数の高い順に表示されます。
昇順(小さい順)は ASC、降順(大きい順)は DESC

🔹 ORDER BY の基本

  • 書き方: SELECT 列名 FROM テーブル名 ORDER BY 列名 [ASC|DESC];
  • ASC(Ascending)=昇順(小さい値 → 大きい値、古い日付 → 新しい日付)
  • DESC(Descending)=降順(大きい値 → 小さい値、新しい日付 → 古い日付)
  • ASCは省略可能です。

6. まとめて書くとこうなる!

実際には、これらを組み合わせて使うことが多いです。

例:
「数学の点数が50点以上の人を対象に、学年ごとに平均点を出して、平均点が70点以上の学年だけを、平均点の高い順に表示する」

SELECT 学年, AVG(点数) AS 平均点
FROM 成績
WHERE 点数 >= 50
GROUP BY 学年
HAVING AVG(点数) >= 70
ORDER BY 平均点 DESC;

まとめ

  • WHERE:データを絞り込む
  • GROUP BY:グループごとに集計する
  • HAVING:グループに条件をつける
  • ORDER BY:結果を並べ替える

この4つを押さえると、SELECT文の9割は理解できたといっても過言ではありません!🎉