平成22年度 秋期 ITパスポート試験 問84 解説 関係DBの結合と売上集計
関係データベースで管理している“商品”表及び“売上”表を結合して商品の売上 集計を行う。5月の売上合計金額が最も大きい商品はどれか。
- ア 商品A
- イ 商品B ✓ 正答
- ウ 商品C
- エ 商品D
解説
この問題を解くには、次の3つのステップを順番に実行します。
- 売上表から「売上日」が5月であるレコードを抽出する。
- 抽出した各レコードについて「数量 × 価格」を計算する(価格は商品表から参照)。
- 商品ごとに合計金額を出し、最も大きいものを選ぶ。
ステップごとの計算と判断
まず、売上表から5月分だけを抜き出します。
- Z00002:商品コード0001、数量1(5/1)
- Z00003:商品コード0003、数量2(5/15)
- Z00004:商品コード0001、数量3(5/15)
- Z00005:商品コード0002、数量3(5/5)
- Z00006:商品コード0001、数量2(5/10)
- Z00007:商品コード0002、数量1(5/30)
次に、商品表を参照して価格を掛け合わせ、商品ごとに集計します。
商品A(コード0001、価格2,000円)
- 1個 × 2,000円 = 2,000円
- 3個 × 2,000円 = 6,000円
- 2個 × 2,000円 = 4,000円
- 合計:12,000円
商品B(コード0002、価格4,000円)
- 3個 × 4,000円 = 12,000円
- 1個 × 4,000円 = 4,000円
- 合計:16,000円
商品C(コード0003、価格7,000円)
- 2個 × 7,000円 = 14,000円
- 合計:14,000円
商品D(コード0004)
- 5月の日付がないため対象外(0円)
以上の結果、合計金額が最大の16,000円となる「商品B」が正解となります。
関係データベースにおける結合の役割
この問題の核心は、複数の表を関連付けて情報を引き出す「結合」の概念です。実際のデータベース管理システム(RDBMS)では、商品情報と売上情報のように、管理する目的の異なるデータを分けることで、データの重複や不整合を防いでいます。
例えば、「商品名が変わったから商品表を修正したい」という場合、もし売上表の中に商品名が直接書き込まれていたら、すべての売上データを探して書き換えなければなりません。しかし、今回のように「商品コード」という共通の項目で結び付けておけば、商品表の情報を1箇所更新するだけで済みます。この「情報を正規化して効率よく管理する」というデータベース設計の基本が、この問題の背景にあります。
業務データと抽出条件の扱い
この問題で見られる「特定の期間で絞り込み、集計を行う」という処理は、IT現場では最も頻繁に使われるデータ操作の一つです。特に「日付の範囲判定」は注意が必要です。今回の問題でも、4月や6月のデータが含まれており、これらを含めて計算してしまうと間違った結論を導いてしまいます。
実務でSQLという言語を使ってデータベースからデータを抽出する際も、WHERE句を使って期間を正確に指定し、GROUP BY句で商品ごとにまとめてからSUM関数で売上合計を算出するという手順を踏みます。この試験問題は、プログラミングやデータベース操作の最も基礎的な論理思考を、手計算を通じて確認しているといえます。