Chapter 06

データの検索④

JboyHashimoto
JboyHashimoto
2022.10.11に更新

集約した結果に条件を指定する

前回学んだGROUP BYにHAVINGというものを使ってみようと思います。
使い方忘れていた!
GROUP BYとセットで使うと覚えておけば問題なさそう!

COUNT関数などを使ってテーブルのデータを集約した場合、その結果に対する条件指定はWHERE句ではなく、HAVING句を使って行います。
集約関数を書ける場所はSELECT句、HAVING句、ORDER BY句です。
今回使うHAVING句はGROUP BY句の後ろに書きます。

今回やること

生徒さんの数を数えて、点数が38点の人が何人いるか表示するクエリをHAVINGを使って書いてみます。

SELECT COUNT(class_score)
  FROM ClassD
GROUP BY class_score
HAVING class_score = 38;

実行結果

mysql> SELECT COUNT(class_score)
    ->   FROM ClassD
    -> GROUP BY class_score
    -> HAVING class_score = 38;
+--------------------+
| COUNT(class_score) |
+--------------------+
|                  3 |
+--------------------+
1 row in set (0.00 sec)

38点の生徒さんはクラスに3人いるようです。もっと成績を上げないといけないですね。
商品の在庫管理をするテーブルでないと、HAVING句を使う必要があるのかなと、思いますが、在庫管理は好きじゃないので、今回は38点をとってしまったキャラクターを検索するテーブルを作りました(笑)
面白くないと勉強途中で投げ出しちゃうので😅