クエリのグループ化と集計

 クエリでは、同じ値をもつデータを1つにまとめることができます。これをグループ化といいます。
 また、集計機能により数値の合計や平均などの値を求めることができます。
 さらに、グループ化と集計を同時に行うことによって、グループごとの数値の合計や平均などを求めることができます。
 これらの操作について紹介します。

f:id:accs2014:20180617150641p:plain:right:w500

 なお、サンプルとしてこのようなテーブルを用るものとします。


グループ化

f:id:accs2014:20180617135529p:plain:right:w500

 はじめに、先ほどのテーブルを用いて「チーム名」列の値をグループ化してみます。
 クエリのデザインビューに先ほどのテーブルを置き、デザイングリッドでのフィールド欄で「チーム名」列を選択します。
 そして、ウインドウ上部にある「集計」のボタンをクリックします。すると…


f:id:accs2014:20180617132250p:plain:right:w500

 デザイングリッドに「集計」という行が現れます。値は「グループ化」となっていますのでこのままとしておきます。
 このクエリをデータシートビューで見てみると…


f:id:accs2014:20180617132246p:plain:right:w300

 グループ化により同じ値が1つにまとめられた結果、行の数が3つになっています。
 「チーム名」に記録されている値は「Aチーム」「Bチーム」「Cチーム」の3種類だけでしたので、3つのレコードにまとめられたというわけです。
 なお、テーブルでは同じチーム名が続いて記録されていましたが、仮にこれが飛び飛びに記録されていたとしても結果は同じで、やはり行の数は3つだけとなります。


f:id:accs2014:20180617132243p:plain:right:w400

 さて、デザインビューに戻って、フィールド欄に「役職」列を追加してみます。
 「集計」欄の値は同じく「グループ化」とします。
 この場合、「チーム名」と「役職」の組み合わせが1つにまとめられます。


f:id:accs2014:20180617150638p:plain:right:w300

 データシートビューです。
 「チーム名」と「役職」の組み合わせは8種類あります(「Aチーム」「Bチーム」「Cチーム」にそれぞれ「チームマスター」「マネージャー」「メンバー」が存在するが、Cチームにはマネージャーがいない。3×3-1=8)ので、行の数は8となっています。


f:id:accs2014:20180617150634p:plain:right:w500

 ちなみに、すべての列を選択してグループ化すると、もとのテーブルと同じ結果になります。
 元のテーブルには「全く同じレコード」、つまりどの列を見ても同じ値であるようなレコードはなく、「1つにまとめる」ことができないのでこうなります。


集計

f:id:accs2014:20180617143243p:plain:right:w500

 次に、集計により「年俸」の合計を求めてみます。
 基本的に上記のグループ化と同様ですが、まずクエリのデザインビューにテーブルを置き、デザイングリッドでのフィールド欄で「年俸」列を選択します。
 そして、ウインドウ上部にある「集計」のボタンをクリックすると、デザイングリッドに「集計」行が現れ、値は「グループ化」となります。


f:id:accs2014:20180617132349p:plain:right:w400

 ここで、「グループ化」となっているところをクリックします。他の選択肢がプルダウンリストで示されますので「合計」を選びます。
 そしてデータシートビューに変更してみると…


f:id:accs2014:20180617132347p:plain:right:w300

 クエリは1行だけで、値は「67500000」となっています。
 各レコードに記録されている「年俸」の合計が、このようにして求められます。


f:id:accs2014:20180617132344p:plain:right:w300

 なお、クエリを一度閉じてデザインビューで開きなおすと、フィールド欄が「年俸の合計:年俸」と自動的に改められます。コロンまでの部分(「年俸の合計:」)は、列に別名がつけられていることを表しています。


f:id:accs2014:20180617132504p:plain:right:w300

 さて、先ほどのプルダウンリストの内容からわかるように、求められる値は数値の合計だけでなく、平均、分散、最大、最小なども同様に求められます。
 今度は「平均」を選択してみます。


f:id:accs2014:20180617132501p:plain:right:w300

 データシートビューを見るとやはり1行だけで、値は「5625000」となっています。67500000/12=5625000ですので、年俸の平均値が得られていることがわかります。


グループ化と集計の併用

f:id:accs2014:20180617132458p:plain:right:w400

 さて、上記の要領で「チーム名」を「グループ化」とし、「年俸」を「合計」とするクエリを作ってみます。 
 こうすることで、チームごとの年俸の合計が求められます。


f:id:accs2014:20180617132455p:plain:right:w300

 データシートビューです。チーム名によりグループ化しましたので行は3つとなり、それぞれについて年俸の合計値がが表示されています。これはそれぞれのチームごとの年俸の合計値となっており、すべて足すと当然ながら上記の「集計」で求めれられた値と一致します(27500000+25500000+14500000=67500000)。