2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

情報処理試験の問題を実際にやってみる(DB 2024年 午前2 問7 の巻)

Last updated at Posted at 2025-03-18

はじめに

あじ太郎は情報処理試験の問題を解くだけではあきたらず、実際にやってみようと思いました。
今回は、データベーススペシャリスト試験から 2024年 午前2 問7 の問題に取り組みます。

なお、実際に取り組んでみたら MySQL で日本語のテーブル名、カラム名にしたらどうなる?みたいな記事になりました。

データベーススペシャリスト 2024年 午前2 問7 の内容

出典:IPAのホームページ
https://www.ipa.go.jp/shiken/mondai-kaiotu/2024r06.html
(データベーススペシャリストの過去問題のPDFから該当部分をキャプチャしました)
db_mondai.png
この問題、正直なところ SQL が簡単というか勘で回答できそうな難易度に設定されていると思いますが、実際にデータベースにテーブルを作って SQL を実行してみました。

MySQL と phpMyAdmin の Docker サンプル

以下にアップしました。
https://github.com/aji-taro/db_2024_am2_no7
※Dockerで MySQL を起動して、
SQL を phpMyAdmin で試すことができますよ。
使い方は付属の README.md を参照してください。

試験問題のテーブルを再現する上で一番の課題は、テーブル名やカラム名が日本語になっている点だと思ってはいたのですが、やはりすんなりできませんでした。

以下は最初に書いた SQL

initdb.d/init.sql
CREATE TABLE 商品 (
  商品コード VARCHAR(10) PRIMARY KEY,
  商品名 VARCHAR(10),
  商品ランク VARCHAR(10)
);

MySQL の Docker コンテナを起動させようとしたら、、
エラー発生、ダメみたいね。
さて、どうするか🤔

テーブル名やカラム名をバッククォート`で囲ったら、どうかしら?(以下)

initdb.d/init.sql
CREATE TABLE `商品` (
  `商品コード` VARCHAR(10) PRIMARY KEY,
  `商品名` VARCHAR(10),
  `商品ランク` VARCHAR(10)
);

結果
db001_bake.png
エラーにはならなかったけど、テーブル名やカラム名が化けている。

文字コードを指定してみるか?
ということでcharacter_set_clientを指定。(以下)

initdb.d/init.sql
set character_set_client=utf8mb4;

CREATE TABLE `商品` (
  `商品コード` VARCHAR(10) PRIMARY KEY,
  `商品名` VARCHAR(10),
  `商品ランク` VARCHAR(10)
);

これで正常にテーブルができました🙌
db002_running.png

SQL文の結果は!?

テーブルができたので、問題に記載されている下記のSQLを実行します。

SELECT AVG(売上合計金額) AS 売上平均金額
    FROM 商品 LEFT OUTER JOIN 商品別売上実績
         ON 商品.商品コード = 商品別売上実績.商品コード
    WHERE 商品ランク = 'A'

以下、結果
db004_result.png
解答例の 150 に一致、やったー🙌🙌
MySQL だと小数点以下が表示されるけど、そこはご愛敬。

取り組んでみて

業務ではテーブル名やカラム名を日本語の全角文字にしたことはなく、今後もすることはないと思うので、日本語にしてみて少し楽しかったあじ太郎なのでした。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?