PR

集計クエリを活用! Accessクエリによるデータ集計

クエリ

Accessクエリでは、データを集計する機能を持っています。SQL文ではレコードをグループ化してデータを集計しますが、この操作をクエリで自動的に行ってくれます。Access選択クエリとSQL文の関係 の記事で、選択クエリのSQL文を紹介しましたが、集計時にはどのような構文になるかも紹介したいと思います。

それでは、さっそく見ていきましょう。

スポンサーリンク

データ準備

今回の説明では以下のサンプルデータを用います。
まず、サンプルテーブルを作成し、以下の設定をします。

表 サンプルテーブルの構造

フィールド名 データ型
品目 短いテキスト
個数 数値型

作成したサンプルテーブルに以下のレコードを登録します。

表 サンプルデータ

品目 個数
りんご 5
ぶどう 10
りんご 1
みかん 19
レモン 16
いちじく 4
メロン 9
レモン 5
みかん 21

ここで、「りんご」や「レモン」は重複してレコードを登録していますが、それぞれの合計を算出するには、該当レコードをすべて抽出して計算する必要があります。このようなときに、Accessクエリの集計機能を用いることで、手間を省くことができます。

クエリの集計機能

サンプルテーブルが出来上がったら、次はサンプルクエリを作成し、「品目」と「個数」フィールドを【フィールド】項目に設定してください。そして、「デザイン」タブの「集計」アイコンをクリックします。すると、クエリ画面の下側に【集計】項目が追加され、各フィールドに対しては「グループ化」がセットされています。

図1 クエリの集計機能

ここで、「グループ化」とは同一の値をまとめる設定で、「品目」フィールドについては「りんご」や「レモン」をまとめることができますが、一方で「個数」フィールドでは別の値となっているため、まとめることができません(「りんご」のレコードで数量は「1」と「5」にしていますが、これらは別の値のため、まとめることができません。仮にそれぞれのレコードで「個数」フィールドの値が「1」と「1」であったり、「5」と「5」であれば、「品目」も「個数」フィールドも同じ値が登録されることになるため、レコードをまとめて出力することができます。)。このため、このままデータシートビューでレコードを確認すると、集計前と同様の結果が出力されます。

さて、集計機能では、数量の合計を算出したり、平均を算出したりと、数値型に対しての処理をすることが一般的です。「品目」フィールドでグループ化をし、「個数」の演算処理をしていきましょう。なお、図2には、【集計】項目に設定できる内容の一覧を示しています。

図2 クエリ集計機能の設定内容

集計機能の設定と結果

まずは、「個数」フィールドの【集計】項目に「合計」を入れてみましょう。この場合、「品目」フィールドは同一の値で「グループ化」し、「個数」フィールドには品目毎の「合計」値が出力されることになります。例えば、「りんご」の場合は「1+5=6」の合計値が出力されています。

図3 クエリ集計機能(合計)の結果

同様に、今度は【集計】項目に「平均」を入れてみましょう。この場合、「個数」フィールドには品目毎の「平均」値が出力されることになります。例えば、「りんご」の場合は「(1+5)/2=3」の平均値が出力されています。

図4 クエリ集計機能(平均)の結果

この他にも、「最大値」、「最小値」の場合は、グループ内のレコード中で該当する値を出力する機能や、「カウント」のような該当するレコード数がいくつあるかを表示する機能もあります。
「りんご」を例にして、各設定をした場合の出力内容は次のようになります。

「りんご」をグループ化して集計した場合の各条件に対する結果
(「個数」フィールドには「1」と「5」の値が登録された2レコードが存在)

集計条件 出力結果
合計 6
平均 3
最小 1
最大 5
カウント 2
標準偏差 2.8284…
分散 8
先頭 5(りんごが始めに現れるレコードの個数)
最後 1(りんごが最後現れるレコードの個数)
スポンサーリンク

集計クエリのSQL文

さて、これまでクエリの集計機能を見てきましたが、Access内部ではどのようにSQL文を作成しているかを見てみましょう。

まず、先ほど作成したクエリの「個数」フィールドにおいて【集計】項目を「合計」としてください。次に、「デザイン」タブの「表示」アイコン中「SQLビュー」を選択します。これによりクエリ画面が切り替わり、SQL文が表示されます。今回の場合は、

SELECT [サンプルテーブル].品目, Sum([サンプルテーブル].個数) AS 個数の合計
FROM サンプルテーブル GROUP BY [サンプルテーブル].品目;

と記載されています。

ここで、SQL文における「GROUP BY フィールド名」は当該フィールドでグループ化することを意味しており、クエリの【集計】項目で「グループ化」を設定したフィールドに一致します。また、「Sum(フィールド名)」は、当該フィールドの値を合計した結果を返すことを意味しています。さらに、「AS ○○」は当該フィールドの名称を「○○」として出力することを意味しています。
このようにして、Access内でSQL文を自動作成し、図3に示す結果が出力されるようになります。

SQL文の理解が進むと、例えば「Sum」の部分を「Avg」にすることで平均値を返すこともでき、図4の結果を得ることができます。

図5 集計クエリのSQL文

まとめ

今回は、クエリの集計機能について紹介しました。対象とするフィールドのデータ型によって集計条件の設定方法を考える必要がありますが、あるデータ毎の合計値や平均値を容易に出力することができ、業務効率の改善が図れますので、是非操作方法を覚えていただければと思います。

スポンサーリンク

Kindle Unlimitedにサインアップして無料体験に登録する
Kindle Unlimitedに登録すると、人気のシリーズ、ベストセラー、名作などに好きなだけアクセスして、シームレスなデジタル読書体験を実現できます。

コメント

タイトルとURLをコピーしました