この記事では、集計関数と呼ばれる Access で関数の種類を使用して、クエリ結果セット内のデータを合計する方法について説明します。 この記事では、 COUNT や AVG などの他の集計関数を使用して、結果セットの値をカウントまたは平均する方法についても簡単に説明します。 さらに、この記事では、クエリの設計を変更することなくデータを合計するために使用する Access の機能である Total Row を使用する方法について説明します。
目的に合ったトピックをクリックしてください
データの集計方法を理解する
集計関数と呼ばれるタイプの関数を使用すると、クエリで列の数値を合計できます。 集計関数は、データ列で計算を実行して、単一の値を返します。 Access には、Sum、Count、Avg (平均の計算用)、Min、Max といったさまざまな集計関数が用意されています。 データを集計するときは、Sum 関数をクエリに追加し、データを数えるときは Count 関数を使用します。
さらに、 Access では、 Sum やその他の集計関数をクエリに追加するいくつかの方法が提供されます。 たとえば、次のような機能を利用できます。
-
クエリをデータシート ビューで開いて、集計行を追加する。 Accessの機能である Total Row を使用すると、クエリのデザインを変更することなく、クエリ結果セットの 1 つ以上の列で集計関数を使用できます。
-
集計クエリを作成する。 集計クエリはグループ化されたレコードで小計を計算しますが、集計行は 1 つ以上のデータ列 (フィールド) の総計を計算します。 たとえば、都市別または四半期ごとの売上の小計を出したい場合は、集計クエリを使って必要なカテゴリ別にレコードをグループ化して、売上高を集計します。
-
クロス集計クエリを作成します。 クロス集計クエリは、Excel ワークシートに似たグリッドにその結果を表示する特殊な種類のクエリです。 クロス集計クエリでは、値を集計し、2 つのファクト セット (1 つは横 (行見出し) を下に、もう 1 つは上部 (列見出し) でグループ化します。 たとえば、次の表に示すように、クロス集計クエリを使用して、過去 3 年間の各都市の売上合計を表示できます。
都市 |
2003 |
2004 |
2005 |
---|---|---|---|
パリ |
254,556 |
372,455 |
467,892 |
シドニー |
478,021 |
372,987 |
276,399 |
ジャカルタ |
572,997 |
684,374 |
792,571 |
... |
... |
... |
... |
注: このドキュメントの説明セクションでは、主に Sum 関数を使用していますが、集計行やクエリでは他の集計関数も使用できるので覚えておいてください。 他の集計関数の使用については、この記事後半の集計関数リファレンスセクションを参照してください。
他の集計関数の使用方法については、「データシートに列の合計を表示する」を参照してください。
以降のセクションの手順では、Total 行を追加する方法、集計クエリを使用してグループ間でデータを合計する方法、およびグループと時間間隔の間でデータを小計するクロス集計クエリを使用する方法について説明します。 作業を進めるにつれて、集計関数の多くは、特定のデータ型に設定されたフィールド内のデータでのみ機能します。 たとえば、 SUM 関数は、数値、10 進数、または通貨のデータ型に設定されたフィールドでのみ機能します。 各関数に必要なデータ型の詳細については、この記事の後半の 「集計関数リファレンス」セクションを参照してください。
データ型の基本情報については、「フィールドのデータ型の設定を修正または変更する」を参照してください。
サンプル データを準備する
この記事の説明セクションでは、サンプル データとしてテーブルを使用します。 説明手順では、集計関数の動作を分かりやすく説明するために、以下のサンプル テーブルを使用します。 必要に応じて、サンプル テーブルを新規または既存のデータベースに追加してもかまいません。
Access では、サンプル テーブルを複数の方法でデータベースに追加できます。 データを手動で入力したり、Excel などのスプレッドシート プログラムに各テーブルをコピーしてワークシートを Access にインポートしたり、メモ帳などのテキスト エディターにデータを貼り付けて、結果のテキスト ファイルからデータをインポートしたりできます。
このセクションの手順では、空白のデータシートにデータを手動で入力する方法と、サンプル テーブルをスプレッドシート プログラムにコピーし、それらのテーブルを Access にインポートする方法について説明します。 テキスト データの作成とインポートについては、「テキスト ファイルのデータのインポートとリンクの設定」を参照してください。
この記事の操作手順では、次のテーブルを使用します。 次のテーブルを使ってサンプル データを作成します。
カテゴリ テーブル:
カテゴリ |
---|
人形 |
ゲームとパズル |
アートとフレーミング |
ビデオ ゲーム |
DVD と映画 |
モデルとホビー |
スポーツ |
商品テーブル:
商品名 |
価格 |
カテゴリ |
---|---|---|
プログラマー アクション フィギア |
$12.95 |
人形 |
楽しい C# (ファミリー向けボード ゲーム) |
$15.85 |
ゲームとパズル |
リレーショナル データベース図 |
$22.50 |
アートとフレーミング |
マジカル コンピューター チップ (500 個) |
$32.65 |
ゲームとパズル |
Access! ゲーム |
$22.95 |
ゲームとパズル |
コンピューター マニアと伝説上の生物 |
$78.50 |
ビデオ ゲーム |
コンピュータオタクのための演習! The DVD! |
$14.88 |
DVD と映画 |
究極の空飛ぶピザ |
$36.75 |
スポーツ |
5.25 インチ外付けフロッピー ディスク ドライブ (1/4 スケール) |
$65.00 |
モデルとホビー |
役人ノンアクション フィギア |
$78.88 |
人形 |
グルーム |
$53.33 |
ビデオ ゲーム |
キーボードを自作する |
$77.95 |
モデルとホビー |
受注テーブル:
受注日 |
出荷日 |
出荷先都市 |
配送料 |
---|---|---|---|
2005/11/14 |
2005/11/15 |
ジャカルタ |
$55.00 |
2005/11/14 |
2005/11/15 |
シドニー |
$76.00 |
2005/11/16 |
2005/11/17 |
シドニー |
$87.00 |
2005/11/17 |
2005/11/18 |
ジャカルタ |
$43.00 |
2005/11/17 |
2005/11/18 |
パリ |
$105.00 |
2005/11/17 |
2005/11/18 |
シュトゥットガルト |
$112.00 |
2005/11/18 |
2005/11/19 |
ウィーン |
$215.00 |
2005/11/19 |
2005/11/20 |
マイアミ |
$525.00 |
2005/11/20 |
2005/11/21 |
ウィーン |
$198.00 |
2005/11/20 |
2005/11/21 |
パリ |
$187.00 |
2005/11/21 |
2005/11/22 |
シドニー |
$81.00 |
2005/11/23 |
2005/11/24 |
ジャカルタ |
$92.00 |
受注明細テーブル:
受注 ID |
商品名 |
商品 ID |
単価 |
数量 |
割引 |
---|---|---|---|---|---|
1 |
キーボードを自作する |
12 |
$77.95 |
9 |
5% |
1 |
役人ノンアクション フィギア |
2 |
$78.88 |
4 |
7.5% |
2 |
コンピュータオタクのための演習! The DVD! |
7 |
$14.88 |
6 |
4% |
2 |
マジカル コンピューター チップ |
4 |
$32.65 |
8 |
0 |
2 |
コンピューター マニアと伝説上の生物 |
6 |
$78.50 |
4 |
0 |
3 |
Access! ゲーム |
5 |
$22.95 |
5 |
15% |
4 |
プログラマー アクション フィギア |
1 |
$12.95 |
2 |
6% |
4 |
究極の空飛ぶピザ |
8 |
$36.75 |
8 |
4% |
5 |
5.25 インチ外付けフロッピー ディスク ドライブ (1/4 スケール) |
9 |
$65.00 |
4 |
10% |
6 |
リレーショナル データベース図 |
3 |
$22.50 |
12 |
6.5% |
7 |
グルーム |
11 |
$53.33 |
6 |
8% |
7 |
リレーショナル データベース図 |
3 |
$22.50 |
4 |
9% |
注: 一般的なデータベースの場合、受注明細テーブルは製品 ID フィールドのみで、製品名フィールドはないのが普通です。 本サンプル テーブルでは、データを見やすくするために製品名フィールドを使用していることを覚えておいてください。
サンプル データを手動で入力する
-
[作成] タブの [テーブル] で、[テーブル] をクリックします。
Access により、データベースに空のテーブルが新規に追加されます。
注: 空の新規データベースが開かれている場合は、この手順は必要ありませんが、データベースにテーブルを追加する必要があるときは必ずこの手順どおりに行います。
-
見出し行の先頭セルをダブルクリックして、サンプル テーブルのフィールド名を入力します。
Access の既定では、見出し行の空のフィールドには、次のように、[新しいフィールドの追加] というテキストが表示されています。
-
矢印キーを使って (Tab キーを押すか、新しいセルをダブルクリックしてもかまいません)、次の空の見出しセルに移動し、2 つ目のフィールド名を入力します。 すべてのフィールド名を入力するまでこの手順を繰り返します。
-
サンプル テーブルにデータを入力します。
データを入力する際、各フィールドのデータ型を Access が予測します。 リレーショナル データベースを初めて使用する場合は、テーブルのフィールドごとに、数値、文字列、日付/時刻などのデータ型を設定する必要があります。 データ型を設定すると、データを正確に入力できるだけでなく、計算で電話番号を使用する場合など、誤入力を防ぐことができます。 今回のサンプル テーブルでは、Access にデータ型を予測させます。
-
データの入力が完了したら、[保存] をクリックします。
(キーボード ショートカット: Ctrl+S)
[名前を付けて保存] ダイアログ ボックスが表示されます。
-
[テーブル名] ボックスに、サンプル テーブルの名前を入力し、[OK] をクリックします。
説明セクションのクエリで使用しているため、各サンプル テーブルの名前を使用します。
-
このセクションの最初に記載されている各サンプル テーブルを作成するまで、上記の手順を繰り返します。
データを手動で入力したくない場合は、次の手順に従ってデータをスプレッドシート ファイルにコピーして、スプレッドシート ファイルからデータを Access にインポートしてください。
サンプル ワークシートを作成する
-
スプレッドシート プログラムを開始して、空のファイルを新規に作成します。 Excel を使用する場合は、既定で空のブックが作成されます。
-
上記の 1 つ目のサンプル テーブルをコピーして、1 つ目のワークシートの先頭のセルから貼り付けます。
-
スプレッドシート プログラムの機能を使って、ワークシートの名前を変更します。 ワークシートにはサンプル テーブルと同じ名前を付けます。 たとえば、サンプル テーブルの名前が Categories の場合は、ワークシートにも同じ名前を付けます。
-
手順 2 と 3 を繰り返して、各サンプル テーブルすべてを空のワークシートにコピーして、ワークシートの名前を変更します。
注: ワークシートをスプレッドシート ファイルに追加しなければならないことがあります。 ワークシートの追加については、スプレッドシート プログラムのヘルプを参照してください。
-
ワークシートをコンピューター上またはネットワーク上の便利な場所に保存して、次の手順に進みます。
ワークシートからデータベース テーブルを作成する
-
[ 外部データ ] タブの [ & リンクのインポート ] グループで、[ 新しいデータ ソース ] > [ファイルから ] > Excel をクリックします。
[ 外部データの取得 - Excel スプレッドシート ] ダイアログ ボックスが表示されます。
-
[参照] をクリックして、上の手順で作成したスプレッドシート ファイルを開いて、[OK] をクリックします。
スプレッドシート インポート ウィザードが起動します。
-
ウィザードは既定でワークブックの 1 つ目のワークシート (上のセクションの手順に従った場合は Customers ワークシート) を選択し、ワークシートのデータがウィザード ページの下側に表示されます。 [次へ] をクリックします。
-
ウィザードの次のページで、[先頭行をフィールド名として使う] をクリックして、[次へ] をクリックします。
-
必要に応じて、次のページの [フィールドのオプション] のテキスト ボックスおよびリストを使って、フィールド名とデータ型を変更するあるいはインポート操作で入力されたフィールドを省略することもできます。 それ以外の場合は、[次へ] をクリックします。
-
[主キーを自動的に設定する] オプションが選択された状態で、[次へ] をクリックします。
-
Access の既定では、ワークシートの名前を新しいテーブルに使用します。 名前をそのまま受け入れるか、別の名前を入力して、[完了] をクリックします。
-
手順 1 から 7 を繰り返して、ワークブックのすてべのワークシートからテーブルを作成します。
主キー フィールドの名前を変更する
注: ワークシートをインポートすると、Access によって各テーブルに主キー列が自動的に追加され、既定では、その列 "ID" という名前の Access が追加され、AutoNumber データ型に設定されます。 この手順では、各主キー フィールドの名前を変更する方法について説明します。 これを行うと、クエリ内のすべてのフィールドを明確に識別するのに役立ちます。
-
ナビゲーション ウィンドウで、上の手順で作成したテーブルをひとつひとつ右クリックして、[デザイン ビュー] をクリックします。
-
各テーブルで、主キー フィールドを見つけます。 Access は既定で、各フィールドに ID という名前を付けます。
-
各主キー フィールドの [フィールド名] 列で、テーブル名を追加します。
たとえば、Categories テーブルの ID フィールドの名前を "カテゴリ ID" に、Orders テーブルのフィールドの名前を "Order ID" に変更します。 Order Details テーブルの場合は、フィールドの名前を "詳細 ID" に変更します。 Products テーブルの場合は、フィールドの名前を "Product ID" に変更します。
-
変更内容を保存します。
この記事で使用するサンプル テーブルには、必ず主キー フィールドが使用されており、そのフィールド名は上の手順で説明したように名前が変更されています。
集計行を使ってデータを集計する
[集計] 行をクエリに追加するには、データシート ビューでクエリを開き、行を追加してから、使用する集計関数 ( Sum、 Min、 Max、 Avg など) を選択します。 このセクションの手順では、基本的な選択クエリを作成し、[合計] 行を追加する方法について説明します。 前のセクションで説明したサンプル テーブルを使用する必要はありません。
基本的な選択クエリを作成する
-
[作成] タブの [クエリ] グループで [クエリ デザイン] をクリックします。
-
クエリで使用するテーブルをダブルクリックします。
クエリ デザイナーの上の部分に、選択されたテーブルがウィンドウとして表示されます。
-
クエリで使用したいテーブルのフィールドをダブルクリックします。
フィールドは、名前や説明など説明的データを含むフィールドも選択できますが、数値または通貨データを含むフィールドは必ず選択しなければいけません。
各フィールドは、デザイン グリッドのセルに表示されます。
-
[ の実行 ] をクリックしてクエリを実行します。
データシート ビューにクエリの結果セットが表示されます。
-
必要に応じて、デザイン ビューに切り替えて、クエリを調整できます。 クエリを調整するには、クエリのドキュメント タブを右クリックして、[デザイン ビュー] をクリックします。 テーブルのフィールドを追加または削除するなどして、適宜クエリを調整します。 フィールドを削除するには、デザイン グリッドで列を選択して、Delete キーを押します。
-
クエリを保存します。
集計行を追加する
-
クエリがデータシート ビューで開かれていることを確認します。 クエリのドキュメント タブを右クリックし、[デザイン ビュー] をクリックしてください。
または
ナビゲーション ウィンドウでクエリをダブルクリックします。 クエリが実行され、結果がデータシートに読み込まれます。
-
[ホーム] タブの [レコード] グループで [集計] をクリックします。
データシートに [集計] 行が新しく追加されます。
-
[集計] 行で、合計を出したいフィールドのセルをクリックして、リストから [合計] を選択します。
集計行を非表示にする
-
[ホーム] タブの [レコード] グループで [集計] をクリックします。
集計行の使用については、「データシートに列の合計を表示する」を参照してください。
クエリを使って総計を計算する
総計とは、列のすべての値の合計です。 総計は、次のようなタイプの計算が可能です。
-
単一の列の値を集計するシンプルな総計。 たとえば、送料の総額を求めることができます。
-
複数の列の値を集計する計算型の総計。 たとえば、複数の商品の値段に発注した商品数を掛け合わせ、結果の値を総計して、総売上高を求めることができます。
-
一部のレコードを除外した総計。 たとえば、先週の金曜の総売上高だけを求めることができます。
この後のセクションの手順では、上で紹介した総計の作成方法をひとつずつ説明します。 今回の説明手順では、受注テーブルと受注明細テーブルを使用します。
受注テーブル
受注 ID |
受注日 |
出荷日 |
出荷先都市 |
配送料 |
---|---|---|---|---|
1 |
2005/11/14 |
2005/11/15 |
ジャカルタ |
$55.00 |
2 |
2005/11/14 |
2005/11/15 |
シドニー |
$76.00 |
3 |
2005/11/16 |
2005/11/17 |
シドニー |
$87.00 |
4 |
2005/11/17 |
2005/11/18 |
ジャカルタ |
$43.00 |
5 |
2005/11/17 |
2005/11/18 |
パリ |
$105.00 |
6 |
2005/11/17 |
2005/11/18 |
シュトゥットガルト |
$112.00 |
7 |
2005/11/18 |
2005/11/19 |
ウィーン |
$215.00 |
8 |
2005/11/19 |
2005/11/20 |
マイアミ |
$525.00 |
9 |
2005/11/20 |
2005/11/21 |
ウィーン |
$198.00 |
10 |
2005/11/20 |
2005/11/21 |
パリ |
$187.00 |
11 |
2005/11/21 |
2005/11/22 |
シドニー |
$81.00 |
12 |
2005/11/23 |
2005/11/24 |
ジャカルタ |
$92.00 |
受注明細テーブル
明細 ID |
受注 ID |
商品名 |
商品 ID |
単価 |
数量 |
割引 |
---|---|---|---|---|---|---|
1 |
1 |
キーボードを自作する |
12 |
$77.95 |
9 |
0.05 |
2 |
1 |
役人ノンアクション フィギア |
2 |
$78.88 |
4 |
0.075 |
3 |
2 |
コンピュータオタクのための演習! The DVD! |
7 |
$14.88 |
6 |
0.04 |
4 |
2 |
マジカル コンピューター チップ |
4 |
$32.65 |
8 |
0.00 |
5 |
2 |
コンピューター マニアと伝説上の生物 |
6 |
$78.50 |
4 |
0.00 |
6 |
3 |
Access! ゲーム |
5 |
$22.95 |
5 |
0.15 |
7 |
4 |
プログラマー アクション フィギア |
1 |
$12.95 |
2 |
0.06 |
8 |
4 |
究極の空飛ぶピザ |
8 |
$36.75 |
8 |
0.04 |
9 |
5 |
5.25 インチ外付けフロッピー ディスク ドライブ (1/4 スケール) |
9 |
$65.00 |
4 |
0.10 |
10 |
6 |
リレーショナル データベース図 |
3 |
$22.50 |
12 |
0.065 |
11 |
7 |
グルーム |
11 |
$53.33 |
6 |
0.08 |
12 |
7 |
リレーショナル データベース図 |
3 |
$22.50 |
4 |
0.09 |
シンプルな総計を計算する
-
[作成] タブの [クエリ] グループで [クエリ デザイン] をクリックします。
-
クエリで使用するテーブルをダブルクリックします。
サンプル データを使用する場合は、受注テーブルをダブルクリックします。
クエリ デザイナーの上の部分に、テーブルがウィンドウとして表示されます。
-
合計するフィールドをダブルクリックします。 フィールドが数値または通貨のデータ型に設定されていることを確認します。 テキスト フィールドなどの数値以外のフィールドの値を合計しようとすると、クエリを実行しようとすると、 条件式のエラー メッセージにデータ型の不一致 が表示されます。
サンプル データを使用する場合は、配送料列をダブルクリックします。
このようなフィールドで総計を出したい場合は、グリッドに数値フィールドを追加できます。 集計クエリでは、複数の列の総計を計算できます。
-
[ クエリ デザイン ] タブの [ 表示/非表示 ] グループで、[ 合計] をクリックします。
[集計] 行がデザイン グリッドに表示され、[グループ化] が配送料列のセルに表示されます。
-
[集計] 行のセルの値を [合計] に変更します。
-
[ の実行 ] をクリックしてクエリを実行し、結果をデータシート ビューに表示します。
ヒント: 集計したフィールドの名前の先頭に、Access によって "SumOf" が追加されます。 列の見出しを [送料の総額] のような分かりやすい名前に変更するには、デスクトップ ビューに切り替えて、デザイン グリッドの配送料列の [フィールド] 行でクリックします。 カーソルを [配送料] の隣に移動して、[送料の総額]、続いてコロンを入力して、送料の総額: 配送料] とします。
-
必要に応じてクエリを保存して、終了します。
一部のレコードを除外した総計を計算する
-
[作成] タブの [クエリ] グループで [クエリ デザイン] をクリックします。
-
[注文] テーブルと [注文の詳細] テーブルをダブルクリックします。
-
受注テーブルの受注日フィールドをクエリのデザイン グリッドの 1 列目に追加します。
-
1 つ目の列の [抽出条件] 行で、[Date() -1] と入力します。 この式は、計算後の合計から当日のレコードを除外します。
-
次に、各取引の売上額を計算する列を作成します。 グリッドの 2 つ目の列の [フィールド] 行に次の式を入力します。
売上高値: (1-[受注明細].[割引]/100)*([受注明細].[単価]*[受注明細].[数量])
式が参照しているフィールドが、数値または通貨データ型に設定されていることを確認します。 数値、通貨データ型以外に設定されているフィールドを参照している場合、Access は、クエリの実行時に、[抽出条件でデータ型が一致しません] メッセージを表示します。
-
[ クエリ デザイン ] タブの [ 表示/非表示 ] グループで、[ 合計] をクリックします。
[集計] 行がデザイン グリッドに表示され、[グループ化] が 1 つ目と 2 つ目の列に表示されます。
-
2 つ目の列で、[集計] 行のセルの値を [合計] に変更します。 Sum 関数が、個々の売上高を追加します。
-
[ の実行 ] をクリックしてクエリを実行し、結果をデータシート ビューに表示します。
-
クエリを日次売上として保存します。
注: 次にクエリをデザイン ビューで開いたときに、売上高値列の [フィールド] と [集計] 行に指定した値が変わっていることがあるかもしれません。 式が Sum 関数の中に入り、[集計] 行は、合計の代わりに式を表示します。
たとえば、サンプル データを使用して、クエリを作成している場合は (上の手順に従って)、次のようになります。
売上高値: Sum((1-[受注明細].割引/100)*([受注明細].単価*[受注明細].数量))
集計クエリを使ってグループの集計を計算する
このセクションの手順では、データ グループ全体の小計を計算する集計クエリを作成する方法について説明します。 作業を進めるにつれて、既定では、集計クエリには、グループ データを含むフィールド ("カテゴリ" フィールドなど) と、合計するデータを含むフィールド ("売上" フィールドなど) のみを含めることができます。 集計クエリには、カテゴリの項目を説明する別のフィールドを含めることができません。 説明データを表示させたい場合は、集計クエリのフィールドと追加のデータ フィールドを結びつける、2 つ目の選択クエリを作成できます。
このセクションの手順では、各製品の売上高を求めるのに必要な集計クエリと選択クエリの作成方法を説明します。 以下のサンプル テーブルの使用を前提に説明を進めていきます。
商品テーブル
商品 ID |
商品名 |
価格 |
カテゴリ |
---|---|---|---|
1 |
プログラマー アクション フィギア |
$12.95 |
人形 |
2 |
楽しい C# (ファミリー向けボード ゲーム) |
$15.85 |
ゲームとパズル |
3 |
リレーショナル データベース図 |
$22.50 |
アートとフレーミング |
4 |
マジカル コンピューター チップ (500 個) |
$32.65 |
アートとフレーミング |
5 |
Access! ゲーム |
$22.95 |
ゲームとパズル |
6 |
コンピューター マニアと伝説上の生物 |
$78.50 |
ビデオ ゲーム |
7 |
コンピュータオタクのための演習! The DVD! |
$14.88 |
DVD と映画 |
8 |
究極の空飛ぶピザ |
$36.75 |
スポーツ |
9 |
5.25 インチ外付けフロッピー ディスク ドライブ (1/4 スケール) |
$65.00 |
モデルとホビー |
10 |
役人ノンアクション フィギア |
$78.88 |
人形 |
11 |
グルーム |
$53.33 |
ビデオ ゲーム |
12 |
キーボードを自作する |
$77.95 |
モデルとホビー |
受注明細テーブル
明細 ID |
受注 ID |
商品名 |
商品 ID |
単価 |
数量 |
割引 |
---|---|---|---|---|---|---|
1 |
1 |
キーボードを自作する |
12 |
$77.95 |
9 |
5% |
2 |
1 |
役人ノンアクション フィギア |
2 |
$78.88 |
4 |
7.5% |
3 |
2 |
コンピュータオタクのための演習! The DVD! |
7 |
$14.88 |
6 |
4% |
4 |
2 |
マジカル コンピューター チップ |
4 |
$32.65 |
8 |
0 |
5 |
2 |
コンピューター マニアと伝説上の生物 |
6 |
$78.50 |
4 |
0 |
6 |
3 |
Access! ゲーム |
5 |
$22.95 |
5 |
15% |
7 |
4 |
プログラマー アクション フィギア |
1 |
$12.95 |
2 |
6% |
8 |
4 |
究極の空飛ぶピザ |
8 |
$36.75 |
8 |
4% |
9 |
5 |
5.25 インチ外付けフロッピー ディスク ドライブ (1/4 スケール) |
9 |
$65.00 |
4 |
10% |
10 |
6 |
リレーショナル データベース図 |
3 |
$22.50 |
12 |
6.5% |
11 |
7 |
グルーム |
11 |
$53.33 |
6 |
8% |
12 |
7 |
リレーショナル データベース図 |
3 |
$22.50 |
4 |
9% |
次の手順では、受注テーブルと受注明細テーブルの商品 ID 間に 1 対多のリレーションシップ (リレーションシップの "1" は受注テーブル側) があることを前提に説明します。
集計クエリを作成する
-
[作成] タブの [クエリ] グループで [クエリ デザイン] をクリックします。
-
操作するテーブルを選択し、[ 追加] をクリックします。
クエリ デザイナーの上の部分に、各テーブルがウィンドウとして表示されます。
上のサンプル テーブルを使用している場合は、商品テーブルと受注明細テーブルを追加します。
-
クエリで使用したいテーブルのフィールドをダブルクリックします。
原則として、クエリにはグループ フィールドと値フィールドのみを追加します。 ただし、値フィールドの代わりに計算を使用できます。次の手順では、その方法について説明します。
-
商品テーブルのカテゴリ フィールドをデザイン グリッドに追加します。
-
グリッドの 2 つ目の列に次の式を入力して、各取引の売上高を計算する列を作成します。
売上高値: (1-[受注明細].[割引]/100)*([受注明細].[単価]*[受注明細].[数量])
式で参照しているフィールドが、数値または通貨データ型に設定されていることを確認します。 数値、通貨データ型以外に設定されているフィールドを参照していると、データシート ビューに切り替えした場合に、Access は [抽出条件でデータ型が一致しません] というエラー メッセージを表示します。
-
[ クエリ デザイン ] タブの [ 表示/非表示 ] グループで、[ 合計] をクリックします。
[集計] 行がデザイン グリッドに表示され、[グループ化] が [集計] 行の 1 つ目と 2 つ目の列に表示されます。
-
2 つ目の列で、[集計] 行の値を [合計] に変更します。 Sum 関数が、個々の売上高を追加します。
-
[ の実行 ] をクリックしてクエリを実行し、結果をデータシート ビューに表示します。
-
次のセクションのためにクエリを開いたままにしておきます。
集計クエリで抽出条件を使用する
今回作成したクエリでは、ベースとして使用したテーブルのすべてのレコードを含めています。 合計を計算するときに除外した注文はなく、すべてのカテゴリの合計を表示しています。
レコードを部分的に除外する必要がある場合は、クエリに抽出条件を追加できます。 たとえば、$100 未満の取引を無視したり、製品カテゴリの一部のみの合計を計算したりできます。 このセクションの手順では、3 種類の抽出条件の使用方法を説明します。
-
合計を計算するときに一部のグループを無視する抽出条件。 たとえば、ビデオ ゲームやアート、フレーミング、スポーツ カテゴリのみの合計を計算します。
-
合計の計算後に特定の合計を非表示にする抽出条件。 たとえば、$150,000 を超える合計のみを表示できます。
-
個々のレコードを合計から除外する抽出条件。 たとえば、値 (単価 * 数量) が $100 を下回る場合に、個々の売上取引を除外できます。
次の手順では、抽出条件をひとつずつ追加して、クエリ結果への影響を見ていきます。
抽出条件をクエリに追加する
-
上のセクションで使用したクエリをデザイン ビューで開きます。 クエリを調整するには、クエリのドキュメント タブを右クリックして、[デザイン ビュー] をクリックします。
または
ナビゲーション ウィンドウでクエリを右クリックし、[デザイン ビュー] をクリックします。
-
[カテゴリ ID] 列の [抽出条件] 行に、=Dolls Or Sports or Art and Framing と入力します。
-
[ の実行 ] をクリックしてクエリを実行し、結果をデータシート ビューに表示します。
-
デザイン ビューに戻り、売上高値列の [抽出条件] 行に >100 と入力します。
-
クエリを実行して結果を確認したら、デザイン ビューに戻ります。
-
次に、$100 未満の個々の売上取引を除外する抽出条件を追加します。 そのためには、列をもう 1 つ追加する必要があります。
注: 売上高値列には 3 つ目の抽出条件を指定できません。 この列に指定する条件はすべて、個々の値ではなく、合計に適用されます。
-
式を 2 つ目の列から 3 つ目の列にコピーします。
-
新しい列の [集計] 行で、[Where 条件] を選択して、[条件抽出] 行で >20. と入力します。
-
クエリを実行して結果を確認したら、クエリを保存します。
注: 次にクエリをデザイン ビューで開いたときに、デザイン グリッドが少し変わっていることに気付くかもしれません。 2 つ目の列で、[フィールド] 行の式が、Sum 関数の中に入り、[集計] 行は、合計の代わりに式を表示します。
売上高値: Sum((1-[受注明細].割引/100)*([受注明細].単価*[受注 明細].数量))
また、4 つ目の列が表示されているはずです。 この列は 2 つ目の列のコピーですが、2 つ目の列で指定した抽出条件は、実は新しい列の一部として表示されます。
-
クロス集計クエリを使って複数グループ間のデータを集計する
クロス集計クエリは、Excel ワークシートのようなグリッドにその結果を表示する特殊な種類のクエリです。 クロス集計クエリでは、値を集計し、2 つのファクト セット (1 つはサイド (行ヘッダーのセット) を下に設定し、もう 1 つは上部 (列ヘッダーのセット) でグループ化します。 次の図は、クロス集計クエリのサンプルの結果セットの一部を示しています。
クロス集計クエリでは、必ずしもすべてのフィールドが結果セットに取り込まれるわけではありません。クエリで使用するテーブルに、起こりうるすべてのデータ ポイントで、いつも値が入っているとは限らないからです。説明を読む際はこの点を念頭に置いて読み進めてください。
クロス集計クエリを作成する場合、複数のテーブルからデータを取り込むのが一般的です。また、行見出しとして使用されるデータ、列見出しとして使用されるデータ、集計するあるいはそうでなければ計算したい値という 3 種類のデータが必ず取り込まれます。
このセクションの手順では、次のテーブルを使用します。
受注テーブル
受注日 |
出荷日 |
出荷先都市 |
配送料 |
---|---|---|---|
2005/11/14 |
2005/11/15 |
ジャカルタ |
$55.00 |
2005/11/14 |
2005/11/15 |
シドニー |
$76.00 |
2005/11/16 |
2005/11/17 |
シドニー |
$87.00 |
2005/11/17 |
2005/11/18 |
ジャカルタ |
$43.00 |
2005/11/17 |
2005/11/18 |
パリ |
$105.00 |
2005/11/17 |
2005/11/18 |
シュトゥットガルト |
$112.00 |
2005/11/18 |
2005/11/19 |
ウィーン |
$215.00 |
2005/11/19 |
2005/11/20 |
マイアミ |
$525.00 |
2005/11/20 |
2005/11/21 |
ウィーン |
$198.00 |
2005/11/20 |
2005/11/21 |
パリ |
$187.00 |
2005/11/21 |
2005/11/22 |
シドニー |
$81.00 |
2005/11/23 |
2005/11/24 |
ジャカルタ |
$92.00 |
受注明細テーブル
受注 ID |
商品名 |
商品 ID |
単価 |
数量 |
割引 |
---|---|---|---|---|---|
1 |
キーボードを自作する |
12 |
$77.95 |
9 |
5% |
1 |
役人ノンアクション フィギア |
2 |
$78.88 |
4 |
7.5% |
2 |
コンピュータオタクのための演習! The DVD! |
7 |
$14.88 |
6 |
4% |
2 |
マジカル コンピューター チップ |
4 |
$32.65 |
8 |
0 |
2 |
コンピューター マニアと伝説上の生物 |
6 |
$78.50 |
4 |
0 |
3 |
Access! ゲーム |
5 |
$22.95 |
5 |
15% |
4 |
プログラマー アクション フィギア |
1 |
$12.95 |
2 |
6% |
4 |
究極の空飛ぶピザ |
8 |
$36.75 |
8 |
4% |
5 |
5.25 インチ外付けフロッピー ディスク ドライブ (1/4 スケール) |
9 |
$65.00 |
4 |
10% |
6 |
リレーショナル データベース図 |
3 |
$22.50 |
12 |
6.5% |
7 |
グルーム |
11 |
$53.33 |
6 |
8% |
7 |
リレーショナル データベース図 |
3 |
$22.50 |
4 |
9% |
次の手順では、売上高を都市別にグループ化するクロス集計クエリの作成方法を説明します。 このクエリは、書式設定をした日付と売上合計を返す、2 つの式を使用します。
クロス集計クエリを作成する
-
[作成] タブの [クエリ] グループで [クエリ デザイン] をクリックします。
-
クエリで使用するテーブルをダブルクリックします。
クエリ デザイナーの上の部分に、各テーブルがウィンドウとして表示されます。
サンプル テーブルを使用する場合は、受注テーブルと受注明細テーブルをダブルクリックします。
-
クエリ結果で使用したいフィールドをダブルクリックします。
フィールド名は、それぞれ、クエリ デザイン グリッドの [フィールド] 行にある空白セルに表示されます。
サンプル テーブルを使用している場合は、受注テーブルから出荷先都市フィールドと出荷日フィールドを追加します。
-
[フィールド] 行の次の空白セルで、次の式をコピーして貼り付けるか、入力します: 売上高: Sum(CCur([受注明細].[単価]*[数量]*(1-[割引])/100)*100)
-
[ クエリ デザイン ] タブの [ クエリの種類 ] グループで、[ クロス集計] をクリックします。
デザイン グリッドに、[集計] 行と [クロス集計] 行が表示されます。
-
都市フィールドの [集計] 行のセルをクリックして、[グループ化] を選択します。 出荷日フィールドでも同じ操作を行います。 売上合計フィールドの [集計] セルの値を [式] に変更します。
-
[クロス集計] 行で、都市フィールドのセルを [行見出し] に、出荷日フィールドを [列見出し] に、売上高フィールドに [値] を設定します。
-
[ クエリ デザイン ] タブの [ 結果 ] グループで、[ 実行] をクリックします。
クエリ結果がデータシート ビューに表示されます。
集計関数リファレンス
この表では、Access が集計行およびクエリで提供する集計関数の一覧と説明です。 なお、Access では、集計行で利用できる以外にも、クエリ用の集計関数を提供しています。
関数 |
説明 |
使用するデータ型 |
---|---|---|
Average |
列での平均値を計算します。 対象の列には、数値、通貨、または日付/時刻型データが格納されている必要があります。 この関数は null 値を無視します。 |
数値、通貨、日付/時刻型 |
Count |
列内のアイテム数をカウントします。 |
すべてのデータ型。ただし、複数値リストの列など、複雑な反復タイプのスカラー データを除く。 複数値リストの詳細については、複数値フィールドの作成または削除に関する記事を参照してください。 |
Maximum |
値が最も大きい項目を返します。 テキスト データの場合、最大値は最後のアルファベット値です。Access では大文字と小文字が無視されます。 この関数は null 値を無視します。 |
数値、通貨、日付/時刻型 |
Minimum |
値が最も小さい項目を返します。 テキスト データの場合、最小値は最初のアルファベット値です。Access では大文字と小文字は無視されます。 この関数は null 値を無視します。 |
数値、通貨、日付/時刻型 |
Standard Deviation |
統計的な対象となる値がその平均からどれだけ広い範囲に分布しているかを計測します。 この関数の使用については、「データシートに列の合計を表示する」を参照してください。 |
数値、通貨 |
Sum |
列内の項目を加算します。 数値と通貨データでのみ使用できます。 |
数値、通貨 |
Variance |
列内のすべての値の統計的変位を計測します。 この関数は数値と通貨データでのみ使用できます。 テーブルに 2 行以上の行がない場合、Access は null 値を返します。 この関数の使用については、「データシートに列の合計を表示する」を参照してください。 |
数値、通貨 |