
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」
未満で絞り込み。
条件で絞り込んだ行(レコード)数
を表示。


コメント