LoginSignup
0
1

More than 3 years have passed since last update.

SQLのHAVINGについて②

Last updated at Posted at 2020-09-13

さて、前回せっかく前振りをしたので、今回はHAVINGを実際に使用した結果について説明したいと思います。
前回同様、説明には以下のテーブルを使用します。

name class
鈴木 Aクラス
田中 Aクラス
山田 Bクラス
佐藤 Bクラス
渡辺 Bクラス
中村 Cクラス

まずは、GROUP BYとWHEREを一緒に使ってみましょう。

SQL
SELECT class, COUNT(class) FROM TABLE1 WHERE name != '佐藤';

すると、結果は以下の通りになります。

class COUNT(class)
Aクラス 2
Bクラス 2
Cクラス 1

nameが「佐藤」のレコードが除外されるので、それ以外のレコードを集計した結果が表示されます。
このように、WHEREはGROUP BYが適用される前の段階の抽出条件を指定します。
次に、GROUP BYとHAVINGを一緒に使ってみましょう。

SQL
SELECT class, COUNT(class) AS class_cnt FROM TABLE1 HAVING class_cnt <= 2;

すると、結果は以下の通りになります。

class class_cnt
Aクラス 2
Cクラス 1

HAVINGで指定された抽出条件によって、class_cntが2以下のレコードのみが表示されるので、そのまま集計するとclass_cntが3になってしまうBクラスは表示されなくなります。
これが、一般的なHAVINGの使用方法です。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1