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