ITパスポート 2017年 秋期 問60
問題文
関係データベースで管理している“販売明細”表と“商品”表がある。ノートの売上数量の合計は幾らか。

選択肢
ア:40
イ:80
ウ:120(正解)
エ:200
🔒 解説は解答すると表示されます
関係データベースで管理している“販売明細”表と“商品”表がある。ノートの売上数量の合計は幾らか。【ITパスポート 解説】
正解の理由
商品表を見ると「ノート」の商品コードは S003 です。販売明細表で商品コード S003 の行は2つあり、売上数量は 40 と 80 です。これらを合計すると になります。したがって答えは ウ(120)です。
(補足)ここで使う「合計」はデータベースの集計関数 SUM(足し算をする関数)に相当します。商品表はコードと名前の対応表で、販売明細表は実際の売上データを持っています。商品コードで対応付けてから数量を合計します。
解法ステップ
- 商品表で「ノート」の商品コードを確認する。
- 商品表:S003 → ノート。
- 解説:商品表は「コードと名前の対応表」です。
- 販売明細表から商品コード S003 の行を探す。
- 見つかった行:売上数量 40、売上数量 80。
- 見つけた数量を合計する。
- 計算:。
- 答えは ウ(120)。
(補足のSQL例)データベースで同じことを確認するSQL(SQLは Structured Query Language:データベースに問い合わせる言語):
-- 商品名から集計する場合(商品表と結合する例)
SELECT SUM(m.売上数量) AS 合計
FROM 販売明細 AS m
JOIN 商品 AS p ON m.商品コード = p.商品コード
WHERE p.商品名 = 'ノート';
-- 商品コードが分かっているならこちらの方が簡単
SELECT SUM(売上数量) AS 合計
FROM 販売明細
WHERE 商品コード = 'S003';
選択肢別の誤答解説
- ア: 40
- 誤りの理由:販売明細の S003 の行が2件あるうち、上の1件(40)だけを見てしまった場合の値です。ノートはもう1件(80)もあるため合計すべきです。
- イ: 80
- 誤りの理由:こちらは S003 のもう1件だけ(80)を選んでしまった場合です。どちらか一方だけを使うミスです。
- ウ: 120
- 正しい理由:S003 の売上数量 40 と 80 を合計した値です。両方を考慮するのが正解です。
- エ: 200
- 誤りの理由:販売明細の全行(20 + 40 + 60 + 80 = 200)を合計してしまった場合の値です。これは「全商品の合計」であって「ノートだけの合計」ではありません。
よくある誤解
- 「商品表の行数=売上行数」と混同する
- 商品表は商品マスタ(コードと名前の一覧)で、売上の件数とは別です。売上は販売明細表に複数行あるのが普通です。
- 「商品名を見て売上を数える」だけで済むと思う
- 商品名は商品表にあるため、販売明細表と対応付け(結合、JOIN)が必要です。商品コードで一致させてから集計します。
- 「合計は表全体を足せばよい」と思う
- 問題の質問が「ノートの合計」なら、ノートに該当する行だけをフィルタ(選択)して合計する必要があります。
補足コラム
- 主キー(primary key)と外部キー(foreign key)
- 商品表の「商品コード」は各商品を一意に識別する「主キー」です。販売明細表の「商品コード」は商品表を参照する「外部キー」です。外部キーで2つの表をつなげて(JOIN)意味のある集計ができます。
- 集計と GROUP BY
- 複数商品それぞれの合計を出したいときは、SUM(合計)と GROUP BY(グループ化)を使います。例:
SELECT p.商品名, SUM(m.売上数量) AS 合計数量
FROM 販売明細 AS m
JOIN 商品 AS p ON m.商品コード = p.商品コード
GROUP BY p.商品名;
- これで各商品(鉛筆、消しゴム、ノート)の売上数量合計を一度に出せます。
FAQ
Q1: 「商品名が重複していたらどうする?」
A1: 通常、商品コードで管理します。商品名が同じでも別商品であれば別コードを振ります。集計はコードで行うのが安全です。
A1: 通常、商品コードで管理します。商品名が同じでも別商品であれば別コードを振ります。集計はコードで行うのが安全です。
Q2: 商品表に存在しない商品コードが販売明細にあったら?
A2: データの不整合(孤立した外部キー)が起きています。実務ではデータ修正や欠損処理が必要です。SQLで確認するには LEFT JOIN を使って NULL を探します。
A2: データの不整合(孤立した外部キー)が起きています。実務ではデータ修正や欠損処理が必要です。SQLで確認するには LEFT JOIN を使って NULL を探します。
Q3: 電卓でやる以外に速く集計する方法は?
A3: Excel やデータベース(SQL)の集計機能を使うと速く正確にできます。Excelならフィルタ→合計、データベースなら SUM 関数を使います。
A3: Excel やデータベース(SQL)の集計機能を使うと速く正確にできます。Excelならフィルタ→合計、データベースなら SUM 関数を使います。
関連キーワード: 関係データベース、リレーショナル、商品コード、販売明細、集計、SUM、JOIN、GROUP BY、主キー、外部キー、SQL

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

