データ集計(集計結果で検索する)
集計関数を条件に含める検索
検索条件に集計関数を使用する場合は、WHERE句ではなくHAVING句を使用します。
また、GROUP BY句とセットで使われるケースが多いです。
SELECT 集計キー1, 集計キー2, ・・・ , 集計関数(列1), 集計関数(列2) ・・・ FROM テーブル1
GROUP BY 集計キー1, 集計キー2 ・・・
HAVING 条件式
それではサンプルを見てみましょう。
以下のようなsaleテーブルがあります。
sale_day | item_cd | count | emp_cd |
---|---|---|---|
20191104 | 001 | 10 | A00001 |
20191104 | 001 | 6 | A00003 |
20191105 | 002 | 3 | A00003 |
20191106 | 002 | 1 | A00004 |
item_cd列でグループ化し、count列のデータの平均値を取得後、平均値が5以上のグループを抽出するSQLです。
1 2 3 |
SELECT item_cd, AVG(count) FROM sale GROUP BY item_cd HAVING AVG(count) >= 5; |
上記を実行し、抽出された結果がこちらです。
item_cd | AVG(count) |
---|---|
001 | 8 |
count列の平均値が5以上のグループのみが抽出されました。
なお、通常検索同様、WHERE句を併用することも可能です。
WHERE句はGROUP BY句の前に実行されるのに対して、HAVING句はGROUP BY句でグループ化した結果に対して使用するといった違いがあります。
以上が、集計結果による検索「HAVING」の使い方です。
ぜひ参考にしてみてください。