令和3年度 ITパスポート試験 公開問題 問95 解説 関係データベースの集計
関係データベースで管理された“商品”表,“売上”表から売上日が5月中で,かつ,商品ごとの合計額が20,000円以上になっている商品だけを全て挙げたものはどれか。
- ア 商品A, 商品B, 商品C
- イ 商品A, 商品B, 商品C, 商品D
- ウ 商品B, 商品C ✓ 正答
- エ 商品C
解説
この問題は、以下の3ステップで解くのが最も確実です。
- 売上表から「売上日」が5月のレコードだけを抜き出す。
- 抜き出した各レコードについて、商品コードごとに「個数 × 単価」を計算する。
- 商品コードごとに金額を合計し、20,000円以上になるものを選択する。
手順を詳しく見ていきましょう。
データの絞り込みと集計
まず、売上表から5月の日付(5/5, 5/10, 5/15, 5/30)を持つレコードだけを抽出します。
- 0001(商品A):5/15に5個、5/10に4個
- 0002(商品B):5/5に3個、5/30に3個
- 0003(商品C):5/15に3個
次に、商品表の単価を使い、それぞれの合計額を計算します。
- 商品A(単価2,000円): 円
- 商品B(単価4,000円): 円
- 商品C(単価7,000円): 円
条件である「20,000円以上」を満たすのは、商品Bと商品Cになります。
データベース操作の考え方
この問題は、SQLというデータベース操作言語の基本的な考え方を問うています。実務ではデータベースに対して「特定の期間のデータを抽出し(WHERE句)」、「項目ごとにグループ化し(GROUP BY句)」、「集計結果で条件を絞り込む(HAVING句)」という処理を頻繁に行います。
今回の問題で重要なのは、複数の表が「商品コード」という共通の項目で結びついている点です。このように複数の表を関連付けて情報を取得することを結合といいます。試験で表が2つ以上提示された場合は、まずどの項目が共通しているか(結合キー)を確認する癖をつけておくと、複雑なデータ処理もスムーズに解けるようになります。
ITパスポート試験では、今回のような集計系の問題のほか、特定の条件に合致するレコードを抽出するクエリの書き方を問う問題も頻出します。計算ミスを避けるためにも、抽出したデータをノートの端などにメモしながら進めるのが合格への近道です。