データの集計
データ問合せのためのクエリー「SELECT文」はデータの検索だけでなく、データの集計結果を取得するためにも使えます。ここでは、売上DBを例にSELECT文を用いたデータの集計について見ていくことにしましょう。集計用のSELECT文は下記のような構文になります。
SELECT [DISTINCT] <必要項目リスト> FROM <参照テーブル> [WHERE <条件>] [GROUP BY <グループ化項目リスト>] [HAVING <集計結果条件>] [ORDER BY <並び順項目リスト>];FROM句やWHERE句、ORDER BY句についてはデータの検索の使い方と同じなので省略します。ここではSELECT句、GROUP BY句、HAVING句について説明します。
SELECT句
SELECT句では集計時にグループ化される項目と集計項目を記述します。集計項目には集計関数を使用します。集計関数にはCOUNT関数(対象レコード数を集計します)・SUM関数(数値データの総和を集計します)・MAX関数(最大値を取得します)・MIN関数(最小値を取得します)・AVG関数(平均値を集計します)などがあります。売上伝票明細データのレコード数と数量合計を伝票Noごとに集計する場合は下記のようになります。SELECT 売上伝票明細データ.伝票No , COUNT(*) AS 件数, SUM(売上伝票明細データ.数量) AS総数
GROUP BY句
GROUP BY句では集計時にグループ化する項目を記述します。項目と項目はカンマで区切ります。SELECT句で集計関数処理していない項目は全てGROUP BY句に記述されます。また、SELECT句で記述されていない項目をGROUP BY句で記述することは出来ません。例えば下記のようになります。GROUP BY 売上伝票明細データ.伝票No
HAVING句
HAVING句では集計を掛けた結果に対しての条件を記述します。WHERE句では集計前の集計対象となるレコードの抽出条件であることに対し、HAVING句は集計後のデータの抽出条件になります。条件の記述に関しては条件の対象項目が集計関数になる以外はWHERE句と同じです。例えば下記のようになります。HAVING SUM(売上伝票明細データ.数量) > 2
まとめ
以上の説明を踏まえて、SELECT文の集計クエリーの例を下記に示します。SELECT 売上伝票明細データ.伝票No , COUNT(*) AS 件数, SUM(売上伝票明細データ.数量) AS総数 FROM 売上伝票明細データ GROUP BY 売上伝票明細データ.伝票No HAVING SUM(売上伝票明細データ.数量) > 2 ORDER BY 売上伝票明細データ.伝票No;
このSELECT文により、単一伝票内で2個以上の売上が記載されている伝票について、伝票Noごとの明細件数と売上総数量が伝票No順で表示されます。