SQLを使用してデータを集計することはよくあると思いますが、集計した結果を元にある条件でデータを抜き出す、ということもあると思います。
今回は、ある条件で集計した結果の件数を元に、一定の件数以上のデータを取得するSQLをまとめたいと思います。
サブクエリを使用して集計しておき、メインのクエリのWhere句に件数での抽出条件を指定する方法です。
select * from ( select syohin_cd, syohin_nm, count(*) as cnt from t_uriage group by syohin_cd ) as tbl1 where tbl1.cnt >= 5;
このSQLは、from句に指定したカッコ内のクエリ(サブクエリ)で売上データを商品コードで集計しています。
その結果をメインクエリのfrom句としてメインクエリのWhere句で件数が5件以上の商品コード、商品名、件数を取得しています。
Having句を使用すればGroupBy句の結果に対する抽出条件を指定できます。
select syohin_cd, syohin_nm, count(*) as cnt from t_uriage group by syohin_cd having cnt >= 5;
このSQLでは、商品コードでGroupBy句で集計した結果の件数(cnt)に対して、Having句で件数が5件以上という条件を指定して、
その結果の商品コード、商品名、件数を取得しています。
今回は集計後の件数を元にデータを抽出する方法をまとめました。