ITパスポート 2013年 春期 問61
問題文
関係データベースの“売上”表と“顧客”表を顧客コードで結合し、顧客コードでグループ化して顧客ごとの売上金額の合計を求め、売上金額の合計を降順に整列した。得られた結果の先頭レコードの顧客名はどれか。

選択肢
ア:井上花子
イ:佐藤太郎(正解)
ウ:鈴木三郎
エ:田中梅子
🔒 解説は解答すると表示されます
売上表と顧客表の集計 — 先頭レコードの顧客名は?【ITパスポート 解説】
正解の理由
顧客コードで「売上」表と「顧客」表を結合(JOIN:テーブル同士をつなげる操作)し、顧客コードごとに売上金額を合計(SUM:値を足し合わせる関数)してから、合計を降順(ORDER BY:並べ替える、ここでは降順=大きい順)に整列すると、合計金額が最も大きい顧客が先頭になります。各顧客の合計を計算すると、顧客コードK02の合計が最も大きくなり、その顧客名は イ(佐藤太郎)です。
解法ステップ
- 結合(JOIN)する
- 「顧客コード」で売上データと顧客名を結び付けます。ここで、顧客コードは「顧客」表の主キー(同一顧客を一意に識別する値)で、「売上」表では外部キー(他表の主キーを参照する値)になっています。
- 顧客コードごとにグループ化(GROUP BY:同じ顧客コードでデータをまとめる)して、売上金額を合計(SUM)する
- 各顧客の売上金額の合計を計算します。
- 合計を降順に並べ替え(ORDER BY 合計 DESC)する
- 合計が大きい順に並べ替えます。
- 先頭レコードの顧客名を確認する
- 並べ替えた結果の一番上が答えです。
具体的な合計計算(単位:万円):
- K01: 万円
- K02: 万円
- K03: 万円
- K04: 万円
降順に並べると、K02(130)、K03(120)、K04(70)、K01(60)となるので、先頭はK02 → 顧客名「佐藤太郎」= イ です。
選択肢別の誤答解説
- ア: 井上花子(K01)
- K01の合計は万円で、K02の万円より小さいため先頭にはなりません。
- イ: 佐藤太郎(K02)
- K02の合計は万円で最も大きいため先頭になります(正解)。
- ウ: 鈴木三郎(K03)
- K03の合計は万円で2番目に大きいですが、先頭ではありません。
- エ: 田中梅子(K04)
- K04の合計は万円で順位は3位(K01より大きいがK02・K03より小さい)です。
よくある誤解
- 「結合しないで売上表だけ見る」
- 顧客名は「顧客」表にあるため、顧客名を得るには結合が必要です。結合を忘れると顧客名がわかりません。
- 「合計を求めず、伝票ごとに並べ替えて先頭を見る」
- 問題は顧客ごとの合計を求めることが前提です。伝票単位(行単位)で並べ替えると誤答になります。
- 「降順(大きい順)と昇順(小さい順)をまちがえる」
- 問題文に「降順」とあるか確認してください。逆に並べるミスがよくあります。
補足コラム
実際のデータベース操作では、SQL(Structured Query Language:データベースに命令する言語)で次のように書きます。SQLの各キーワードは先に説明した通りです。
SELECT 顧客.顧客名, SUM(売上.売上金額) AS 合計
FROM 売上
JOIN 顧客 ON 売上.顧客コード = 顧客.顧客コード
GROUP BY 顧客.顧客コード, 顧客.顧客名
ORDER BY 合計 DESC;
- JOIN は内側結合(INNER JOIN)を想定しています。要件によっては LEFT JOIN(売上が無くても顧客全員を表示)を使うことがあります。
- 問題の単位が「万円」なので、金額の扱いに注意してください(表示や単位換算が必要な場合があります)。
FAQ
Q1. 顧客コードが顧客表にない売上伝票があったらどうなる?
A1. 内側結合(JOIN)では、その伝票は結果に現れません。もし顧客が登録されていない売上も含めたいなら LEFT JOIN(左外部結合)を使います。
A1. 内側結合(JOIN)では、その伝票は結果に現れません。もし顧客が登録されていない売上も含めたいなら LEFT JOIN(左外部結合)を使います。
Q2. 合計が同じ顧客が複数いる場合の先頭はどう決める?
A2. 同率の場合はDBの実装やSQLでの追加条件(例えば顧客名順など)により決まります。問題文に指定がない場合は同率の扱いを確認する設問が多いです。
A2. 同率の場合はDBの実装やSQLでの追加条件(例えば顧客名順など)により決まります。問題文に指定がない場合は同率の扱いを確認する設問が多いです。
Q3. 単位を間違えたらどう影響する?
A3. 単位(ここでは万円)を誤ると順位が変わることは通常ありませんが、金額を別の単位で表示する際は必ず変換を行ってください。
A3. 単位(ここでは万円)を誤ると順位が変わることは通常ありませんが、金額を別の単位で表示する際は必ず変換を行ってください。
関連キーワード: SQL、JOIN、GROUP BY、ORDER BY、SUM、顧客コード、売上集計、主キー、外部キー、万円

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

