【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう

access集計グループ合計

【連載】#20 Accessの選択クエリで式ビルダを使い関数、条件式の入力効率を高めよう

本記事では Access の 選択クエリ操作で 集計-グループ クエリ、集計-合計 クエリを使ってテーブルのフィールド値を集計する方法を紹介します。

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう
しらかば堂

いつも記事を読んで頂きありがとうございます~
今日の調子はいかがですか?

 

Access の選択クエリで 集計-グループ 集計- 合計 クエリを使ってみよう

本記事では

【連載】#18 Access を使ってグラフ作成用データをどのように作るか一緒に考えよう

の中で紹介した

  • T0000_東京都コロナ発症状況_マスタ テーブル からお互いに同じものがない日付の作成が必要
  • 日付毎に入院数と退院数を合計することが必要

という方針を実装するため

【連載】#20 Accessの選択クエリで式ビルダを使い関数、条件式の入力効率を高めよう


で作成した
T1020_日付_退院者フラグ_入院者フラグ テーブル

をもとに、 Access選択クエリのなかで 集計-グループ集計- 合計 クエリを使ってこれらの実装を行う手順について詳しく紹介します。

具体的には記事 #18 で紹介済の
M1000_作成_T1040_日付_退院者数_入院者数_退院率
の中の
Q1030_作成_T1030_日付_退院者数_入院者数
つまり

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう
Q1030_作成_T1030_日付_退院者数_入院者数

についての詳細な紹介になります。

選択クエリ対象のテーブル仕様

入力テーブル

このクエリの入力となる
T1020_日付_退院者フラグ_入院者フラグ
は以下のようなものです。

全体を把握するために先頭部分と最後尾の2つのデータシートビューをのせておきます。

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう
【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう

このテーブルをみると

  • 退院者フラグ、入院者フラグは両方とも数値型
  • 退院者フラグのレコードは最後尾以前で欠損している

という特徴があります。

出力テーブル

そしてこちらが
Q1030_作成_T1030_日付_退院者数_入院者数

を実行後の出力テーブル
T1030_日付_退院者数_入院者数
です。

こちらも全体を把握するために先頭部分と最後尾の2つのデータシートビューをのせておきます。

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう
【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう

どうでしょう

  • 全てのレコードは日付毎の退院者数の合計、入院者数の合計になっている
  • 退院者の合計のレコードは最後尾以前で欠損している

という感じでしょうか。

さてこの
Q1030_作成_T1030_日付_退院者数_入院者数
はどうやって退院者数と入院者数を集計するのでしょうか。

テーブルの集計方法を確認しよう

テーブル集計の具体的な手順は動画を見た方が早いので

次の動画再生画面を一度クリックして下に三本線メニュを出し 1 グループ化と合計計算 を選択してから何回かご覧ください。

画面をフルスクリーンにしたり、巻き戻したり、必要に応じて音楽をミュート後、再生速度を変えたりして何回か見て頂くことをお勧めします。

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう
しらかば堂

いかがでしたか?
動画の 2 フィールド間の計算 以降のチャプタは
次の記事 #22 で詳しく紹介しますのでお楽しみに。

それでは今回のテーマに沿って
テーブルの集計方法を紹介しますね。

集計クエリの使い方

それでは改めて
Q1030_作成_T1030_日付_退院者数_入院者数
デザインビュー で確認しましょう。

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう
【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう
みなみ

何? これ。
また変なことになってるんですけど~

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう
しらかば堂

デザインビュー の下の部分をデザイン グリッド といいますが
このデザイン グリッド に今までなかった 集計行 が追加されてますね~

これってどこから来たんでしょうね?

今まであまり明確に紹介していませんでしたが 、Accessレコード は以下の Excelセル のように個々のデータに明確なアドレスがないので、以下のように縦方向の レコード にまたがる計算ができません。

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう

そのかわり テーブル  の レコードグループ化しながらいろいろな集計計算をすることができます。

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう
みなみ

え~ダメじゃん
それってどゆこと?

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう
しらかば堂

私のことは嫌いになってもいいから
Access のことは嫌いにならないで~(笑)

次の画面は
Q1030_作成_T1030_日付_退院者数_入院者数
を作り始めるに当たって最初に
T1020_日付_退院者フラグ_入院者フラグ
からフィールドを選択する画面です。

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう

その結果、データシートビュー は以下のようになりますが

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう

ここからデザインビューに切り替えると次のようになりますよね。

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう

ここでリボンビューの中央にある集計(Σ)ボタンを押すとデザイン グリッドに通常表示されない 集計行 が現れます。

これで 集計クエリ の準備ができました。

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう

グループ化とは

この 集計行 の各フィールドに設定されている グループ化 はどういう意味でしょうか。

これはこの テーブルの中にある全てのレコードを上から順に参照し、同じ値のレコード値をグループ化、つまり一つにまとめるという意味になります。

これはどういうことかと言うと

例えば、この入力テーブル
T1020_日付_退院者フラグ_入院者フラグ
日付 フィールドの値は
2020/06/19
2020/06/19
2020/06/19
2020/06/19
    :
2020/06/19
2020/06/19
2020/06/20
2020/06/20
    :

のように同じものが繰り返され、しばらくすると違うものが出てきますよね。
これを
2020/06/19
2020/06/20
    :

のようにまとめる。

そういう意味です。

グループ毎の合計とは

続いて次の2枚の画像にでてくる グループ毎の 合計 を見てみましょう。

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう
【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう

先ほど見た 集計 欄では プルダウンメニュー からいろいろな種類の集計操作を選ぶことができますが

合計 はこのテーブルの中にある全てのレコードを上から順に参照し

同じ グループ(つまり同じ 日付 をもった レコード)フィールド 値(ここでは退院者フラグ入院者フラグ)の 合計 を グループ毎に集計します。

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう
しらかば堂

これは Excel で ピボットテーブル 作成後に 集計 するのと同じようなイメージですね

結果としてこのクエリは最終的に以下のようになります。

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう

そしてこのクエリの実行結果を以下のようにデータシートビューで確認すると

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう

以下のような結果になります(動画の中で合計値のフィールド名は退院者数、入院者数に変更しています)。

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう

どうでしょう。

動画の中では、このクエリが期待どうりの結果になったので、このクエリを元にいつものようにテーブル作成クエリにしています。

テーブル作成クエリの詳細手順は必要に応じて

【連載】#12 Access のテーブル作成方法を動画を使ってわかりやすく説明します

を参照してくださいね。

グループ集計行で使える演算

ここからは参考情報です。

デザインビューデザイングリッド集計行を追加したとき、上で見たようないろいろな計算ができますが、ここではよく使いそうな集計行の項目、それに対応する集計関数をまとめておきます。

集計行 対応する集計関数 意味
グループ化 グループ内に含まれる列内の項目をグループに分類します
合計 Sum グループ内に含まれる列内の項目を加算します。
平均 Average グループ内に含まれる列内の平均値を計算します。
最小 Minimum グループ内に含まれる列内最も小さい値のアイテムを返します。
最大 Maximum グループ内に含まれる列内最大の値を持つアイテムを返します
カウント Count グループ内に含まれる列内のアイテム数をカウントします。
標準偏差 Standard Deviation グループ内に含まれる列内統計的な対象となる値がその平均からどれだけ広い範囲に分布しているかを計測します。
分散 Variance グループ内に含まれる列内列内のすべての値の統計的変位を計測します。
先頭 グループ内に含まれる列内の先頭のアイテムを返します。
最後 グループ内に含まれる列内最後尾のアイテムを返します。

【連載】#21 Accessの選択クエリで 集計-グループ、集計- 合計 クエリを使ってみよう
しらかば堂

この集計関数の詳細は マイクロソフト の公式サイト の 集計関数リファレンス で確認してくださいね。

まとめ


いかがですか?

今回は Access選択クエリの中にある集計クエリの使い方として

  • グループ化のやり方
  • グループ毎の合計の求め方
  • 集計クエリで利用可能なその他集計項目

について紹介しました。

次回は今回求めた 
T1030_日付_退院者数_入院者数
からレコード毎の計算を行い、グラフ作成の元テーブルとなる
T1040_日付_退院者数_入院者数_退院率
の作成方法
M1000_作成_T1040_日付_退院者数_入院者数_退院率
マクロ
の作成方法等について紹介しましょう。

さてこの記事全体の目標は

  •  今の状況から抜け出してもっと前向きな仕事に取り組みたい
  • さっさと仕事を切り上げて充実したアフターファイブを過ごしたい

でしたよね。

あなたの解決したい問題は何ですか?
次回はまた

【連載】#22 Accessの選択クエリでテーブルの フィールド間計算をしよう

Access VBA の新しい窓を開きましょう。


Microsoft Access 関連教材は次のリンクからどうぞ。

Access VBA 関連教材の紹介


(有償)本記事中で参照している 16_01.accdb から個人のPC環境に依存する部分を削除した 16_02.zip のダウンロードは次のリンクからどうぞ。

(有償) 16_02.zip をダウンロードする