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

データの集計(1)~グループ化と集計の基礎 長谷川裕行
有限会社 手國堂

ビューのグループ化

SELECT命令はテーブルだけではなく、ビューに対しても使えます。商品を仕入先ごとにまとめるような場合は、仕入先テーブル(仕入先_mr)と関連付けたビューを元にする方が結果を読み取りやすくなります。


- ビューを作る -

前回、「商品_mr」と「仕入先_mr」「在庫_mr」を関連付け、仕入先の名称や在庫数を表示するビュー「vw在庫一覧」を作りました。これを使ってみましょう。作り方は前回説明しましたが、念のためにもう一度デザイン画面を掲げておきます。

EnterpriseManagerで作る他、クエリアナライザで以下のようなSQLを発行しても同じものが作れます。このSQLは“makeview.sql”という名前でサンプルに含まれています。

 CREATE VIEW vw在庫一覧
 AS
 SELECT TOP 100 PERCENT 商品_mr.商品ID, 商品_mr.品名, 商品_mr.仕入単価,

      商品_mr.仕入先ID, 仕入先_mr.仕入先名, 在庫_mr.在庫
 FROM 在庫_mr INNER JOIN
      商品_mr ON 在庫_mr.商品ID = 商品_mr.商品ID INNER JOIN
      仕入先_mr ON 商品_mr.仕入先ID = 仕入先_mr.仕入先ID
 ORDER BY 在庫_mr.在庫




- 既存ビューの削除 -

このSQLは新たにビューを生成するため、既にデータベース内に同名の「vw在庫一覧」というビューが存在していると、実行時にエラーとなります。その場合は、先に以下のSQLを実行して「vw在庫一覧」を削除してください。

 DROP VIEW vw在庫一覧

このSQLは“delview.sql”という名前でサンプルに含まれています。

なお、前回作成したビューと今回紹介しているviewは全く同じものです。前回の記事を読んで既に「vw在庫一覧」を作った人は、新たに作り直す必要はありません。


- ビューをグループ化する -

では、ビュー「vw在庫一覧」を元にしてグループ化を試してみましょう。クエリアナライザで以下のSQLを実行します。

 SELECT 仕入先ID, 仕入先名, 在庫
 FROM vw在庫一覧
 GROUP BY 仕入先ID, 仕入先名, 在庫

仕入先名が表示され、同じ仕入先ごとにまとめられています。さらに在庫数も表示されているので、どの仕入先の在庫が多いかまたは少ないかが分かるようになりました。




トップページ
集計処理の重要性
レコードのグループ化
ビューのグループ化
ビューを作る
既存ビューの削除
ビューをグループ化する
レコード数を数える
あとがき
Copyright © MESCIUS inc. All rights reserved.