ホーム - データベース - データの集計

データの集計

データ問合せのためのクエリー「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順で表示されます。