データベース千夜一夜第20回

データの集計(2)~グループ化とレコードの絞り込み 長谷川裕行
有限会社 手國堂

サンプルのテーブルを確認する

今回は、商品の受注状況を固定的に記録したテーブル「累積売上_fx」を使って、グループ化を試してみます。まず、テーブルの構造と内容を確認しておきましょう。


- フィールド構成と内容 -

テーブル「累積売上_fx」のフィールド構成は表1のようになっています。このテーブルには、予め画面1のように29件のデータが記録されています。

これまでにも何度か説明してきましたが、受注(売上)の情報は、「得意先_mr」に関連付けられた「売上ヘッダ」(日付と顧客を記録)と、「商品_mr」に関連付けられた「売上明細」(商品と数量を記録)とに分けて記録され、この2つのテーブルを伝票番号で括り出すことによって「1人の顧客に対する1回の売り上げ」が明確になるようになっています。

「累積売上_fx」はそれぞれの関連付けを断ち切り、「売上ヘッダ」と「売上明細」の内容を他のテーブルとは独立した形で記録した、最終的な受注記録です。顧客や商品の基礎情報に変更があっても、「累積売上_fx」に記録されたデータには影響が及びません。

表1:テーブル「累積売上_fx」のフィールド構成

列名 データ型 長さ
伝票番号 int 4
伝票日付 datetime 8
お客様ID int 4
氏名 nvarchar 30
読み nvarchar 30
性別 nvarchar 4
生年月日 datetime 8
商品ID int 4
商品名 nvarchar 50
数量 int 4
単価 money 8
金額 money 8



- 件数が少なければ追加を -

画面1は、あくまでサンプル・データベースに最初から記録してある内容です。クエリアナライザなどを使って何らかの処理を行っていた場合、内容が変わっている可能性もあります。

必ずしも、画面と同じ内容である必要はありません。15件程度のレコードが記録されていれば、サンプルのSQLを試したときにそれなりの結果を得ることができます。10件以下だとグループ化した結果が少数になり、SQLの意味を理解するのに役立ちません。レコード件数が少ない場合には、EnterpriseManagerでテーブルを開き(テーブルを選択状態にし、メニューから「操作」→「テーブルを開く」→「全行を返す」を選びます)、キーボードから直接新規レコード(最終行の次の行)に値を書き込んでください。

その際、各フィールドのデータ型を間違えないようにしましょう。また、商品名と商品IDの関係にも注意してください。画面1を見ながら同じ内容を入力すれば安全です。

「累積売上_fx」は他のテーブルとはまったく関連付けされていないため、自由にレコードを追加できます。しかし、「顧客_mr」に保存されていないお客様IDと氏名、「商品_mr」に記録されていない商品IDと商品名を入力したり、単価・数量・金額の関係を間違ってしまうと、後々の操作で矛盾が発生します。必ず、それぞれのテーブルに存在する値を矛盾なく書き込むようにしてください。



トップページ
サンプルのテーブルを確認する
フィールド構成と内容
件数が少なければ追加を
複数フィールドでグループ化する
レコードを絞り込んでグループ化する
HAVING句とWHERE句
さらに詳細な集計処理へ
あとがき
Copyright © MESCIUS inc. All rights reserved.