SQL|GROUP BYでグルーピング|WHEREとHAVINGの違い

SQL|GROUP BYでグルーピング|WHEREとHAVINGの違い

データベースをイメージする画像

データベースをイメージする画像

SQL文でのテーブルの行(レコード)をグルーピングするのはGROUP BYを使用する。

テーブルをグルーピングして集計

select
        COUNT(TBLACOL01)
    from
        TABLEA
    group   by
        TBLACOL05

TABLEAの行(レコード)を
列(TBLACOL05)の値の単位で
グルーピングして

グループ毎の行(レコード)数を
表示。

条件付きでグルーピング

GROUP BYでの条件はWHEREとHAVINGを使用する。

WHEREとHAVINGの違い

WHERE:グルーピング前に条件が適用される。

HAVING:グルーピング後に条件が適用される。

WHEREは最初に条件で絞り込んでから、GROUP BYが動作するイメージ。

逆に、HAVINGは先にGROUP BYでグルーピングして、結果から絞り込むって感じ。

WHERE

select
        COUNT(TBLACOL01)
    from
        TABLEA
    where
		TBLACOL05   <   3
    group   by
        TBLACOL05

TABLEAの行(レコード)を
列(TBLACOL05)が「3」未満で
絞り込む。

列(TBLACOL05)の値でグルーピング。

各グループの行(レコード)数を
表示。

HAVING

select
        COUNT(TBLACOL01)
    from
        TABLEA
    group   by
        TBLACOL05
    HAVING
        TBLACOL05   <   3

TABLEAの行(レコード)を
列(TBLACOL05)の値で
グルピング。

結果を列(TBLACOL05)を「3」
未満で絞り込み。

条件で絞り込んだ行(レコード)数
を表示。

コメント

タイトルとURLをコピーしました