応用情報技術者試験 過去問 2025年(令和7年) 春期 午後 問6
販売管理システムの構築
H社は,全国の店舗及びインターネットで釣り具の販売を行っている。これまで販売促進のためにキャンペーンを定期的に実施してきたが,売上に全く結びつかないものもあった。そこで,キャンペーンの機能を強化し,さらにその効率を上げるために,既存の販売管理システムを改修した新しい販売管理システム(以下,新システムという)を構築することになった。
〔キャンペーンの概要〕
キャンペーンとは,2週間~3か月間の定められた期間,幾つかの商品に安い売価を設定することで,新規会員の獲得や,他の商品も一緒に購入してもらうことによる売上の向上を目指す活動である。
新システムで提供するキャンペーンを広報する手段は4種類あり,種別と呼ばれる英字1字で分類される。新システムで提供するキャンペーン種別について,表1に示す。
種別 | 種別名 | 概要 |
---|---|---|
H | 葉書 | キャンペーンについて,特定の会員に葉書で案内する。 全国の店舗及びインターネットでの販売が対象の場合,直近1年以内に購入した実績がある会員に案内する。 特定地域の店舗が対象の場合,店舗ごとに決められた範囲(以下,店舗エリアという)に住む会員に案内する。店舗エリアは,その店舗に来客が見込まれる会員の居住範囲を複数の郵便番号で定めた範囲として定義する。店舗エリアの範囲は,最初に対象店舗の半径5km以内の地域に該当する郵便番号を登録し,定期的に見直す。 |
E | 電子メール | キャンペーンについて,全ての会員に電子メールで案内する。案内の内容は,会員の住所や購入実績に応じてカスタマイズする。 |
B | バナー広告 | 釣り情報のWebサイトやソーシャルメディアにバナー広告を表示して,キャンペーンをアピールする。 |
L | リスティング広告(検索連動型広告) | Webサイトの検索エンジンにおいて,釣り関連のキーワードを入力した際,検索結果にURLリンク付きのテキストを表示して,キャンペーンをアピールする。 |
各キャンペーンには,目標となる複数の指標と予算を設定し,その実施を複数回に分けて行うことがある。その予算を各種別に配賦する割合を変えることによって目標達成率を上げる工夫が求められる。
バナー広告とリスティング広告のキャンペーン(以下,Webキャンペーンという)は,キャンペーン単位で広告内容と予算金額を設定してから,Webマーケティングを運営するT社に実施の詳細を委託する。T社からは,広告内容として設定した広告表示位置やキーワードごとに,その広告費用や表示回数,クリック数などの実績を週次で集計したレポートが送付される。
新システムのE-R図(抜粋)を図1に示す。なお,新システムでは,E-R図のエンティティ名を表名にし,属性名を列名にして,適切なデータ型で表定義した関係データベースによって,データを管理する。

注記 属性名の実線の下線:主キー,破線の下線:外部キーを示す。
主キーの実線が付いている属性名には,外部キーの破線を付けない。
〔キャンペーン種別ごとの実績の集計〕
新しいキャンペーンを計画するために,指定したキャンペーンについて,キャンペーン種別ごとの実績として,売上,原価,粗利,実施金額を集計するSQL文を図2に示す。ここで,":キャンペーン番号"は指定したキャンペーン番号を表す埋込み変数である。なお,関数COALESCE(A,B)は,AがNULLでないときはAを,AがNULLのときはBを返す。
SELECT CK.キャンペーン種別, COALESCE(UK.売上計,0) AS 売上計, COALESCE(UK.原価計,0) AS 原価計, COALESCE(UK.売上計,0) - COALESCE(UK.原価計,0) AS 粗利計, CK.キャンペーン実施金額計 c (SELECT キャンペーン種別, SUM(キャンペーン実施金額) AS キャンペーン実施金額計 FROM キャンペーン実施 WHERE キャンペーン番号 = :キャンペーン番号 GROUP BY キャンペーン種別) CK d (SELECT U.キャンペーン種別, SUM(M.商品個数 * M.商品単価) AS 売上計, e AS 原価計 FROM 売上 U INNER JOIN 売上明細 M ON U.売上番号 = M.売上番号 INNER JOIN 商品 S ON M.商品番号 = S.商品番号 WHERE U.キャンペーン番号 = :キャンペーン番号 GROUP BY U.キャンペーン種別) UK ON CK.キャンペーン種別 = UK.キャンペーン種別
〔葉書を送る店舗エリアの見直し〕
葉書を送る対象となる店舗エリアを,葉書キャンペーンによる会員の購入実績を基に見直すことを考える。対象の店舗における過去1年間に葉書キャンペーンで購入した会員の郵便番号ごとの売上実績数を,売上実績数の降順に出力するSQL文を図3に示す。ここで,":店舗番号"は指定した店舗番号を,":一年前年月日"は現在から1年前の年月日を表す埋込み変数である。
SELECT K.会員郵便番号, COUNT(*) AS 売上実績数 FROM 売上 U INNER JOIN 会員 K ON U.会員番号 = K.会員番号 WHERE U.店舗番号 = :店舗番号 AND U.売上年月日 >= :一年前年月日 f GROUP BY K.会員郵便番号 g
〔Webキャンペーン内容の定期的な見直しの検討〕
Webキャンペーンの効果をより高めるために,T社から送付されるレポートを基に,キャンペーン期間中に広告内容を適宜変更する依頼をT社に出すことを考える。Webキャンペーンの実績を記録するために追加した表の構造を図4に示す。
Webキャンペーン実績(キャンペーン番号,キャンペーン実施番号,キャンペーン種別,広告番号,実績年月日,広告表示位置,キーワード,広告費用,表示回数,クリック数,会員登録数)
注記 下線は主キーを示す。
レビューを実施したところ,Webキャンペーン実績表は日次で実績を集計する想定になってしまっているので見直す必要がある,との指摘を受けた。
その後,①受けた指摘に対応することで,目的の機能を実装することができた。