集計関数

[Oracle] データ集計 集計結果の検索条件指定SQL(HAVING)

データ集計(集計結果で検索する)

集計関数を条件に含める検索

検索条件に集計関数を使用する場合は、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です。

上記を実行し、抽出された結果がこちらです。

item_cd AVG(count)
001 8

count列の平均値が5以上のグループのみが抽出されました。
 
なお、通常検索同様、WHERE句を併用することも可能です。
WHERE句はGROUP BY句の前に実行されるのに対して、HAVING句はGROUP BY句でグループ化した結果に対して使用するといった違いがあります。
 
 
以上が、集計結果による検索「HAVING」の使い方です。
ぜひ参考にしてみてください。