2016年11月14日月曜日

[平成28年度秋] 午後 問3 解説

[問題文・解答]


平成28年度10月に実施された基本情報技術者試験の午後試験の問題・解答はIPA公式ページからダウンロード出来ます。(以下リンク)

[問題概要]


この問題は、選択問題で問2〜問7のうち4問を選択する必要があります。
問題の題材は、従業員の通勤情報を管理する関係データベースです。
従業員の通勤情報データベースから必要な情報を検索する場合について主にSQL文の穴埋め形式で問われます。SQLの基礎知識が無いと厳しい問題です。

[設問1]


○○ごとのデータを求める場合はまず、○○についてグループ化します。
従業員ごとの通勤手当は、通勤費表を従業員番号でグループ化し、関数SUMを用いて合計値を求めればよいです。
交通機関ごとの利用者数は、通勤費表を交通機関コードでグループ化し、関数COUNTでレコードの総数を求めればよいです。

[答] a) エ b) エ c) ウ d) イ

[設問2]


SQLでLIKE演算子は、ワイルドカードを用いて曖昧な文字列の検索に用いられます。
LIKE演算子のワイルドカードのうち、「%」「*」は0文字以上の任意の文字、「_」「?」は任意の1文字を示します。
[設問2]の問題文中に「交通機関コードは3文字の固定長文字列であり、バスの交通機関コードだけが文字"B"で始まる」とあることから、バスの交通機関コードはLIKE演算子で「B%」や「B_ _」を指定すると検索可能です。よって、「イ」が正解です。
IN演算子は、フィールドの値が括弧内で指定した値のいずれかに該当するかどうかを判定する演算子です。「ア」の場合は、交通機関コードが「B00」または「B99」のレコードのみが抽出されるため、不適切です。

[答] e) イ

[設問3]


IN演算子を用いて、新しい路線が影響する「情報都市線」と「駒込バス」の交通機関コードを交通機関表から求めます。更に得られた交通機関コードからIN演算子を用いて当該交通機関を利用している従業員を通勤費表から抽出します。[設問3]の問題文中に「同じ従業員番号は一つだけ表示する」とあることから、従業員番号ごとにグループ化して通勤費表を検索する必要があるため、「エ」が正解となります。

[答] f) エ

[設問4]


[設問4]の問題文中に「受講していない従業員のレコードは存在しない」とあるため、2016/4/20の交通安全講習会を受講していない従業員は、受講日が「20160420」のレコードが講習会受講表に存在しない事になります。
従って、通勤に自家用車を利用している従業員のうち、2016/4/20の交通安全講習会を受講していない従業員を抽出するには、通勤費表で交通機関コードが自家用車を示す「C01」となっており、かつ講習会受講表で受講日が「20160420」のレコードが存在しない従業員を求める必要があり、適切なSQL文は「エ」となります。

[答] g) エ


上記の解説は問題と解答を元に自分なりの考え方を記述しており、間違っている部分もあるかと思いますので、ご了承願います。また、誤りについては正しい考え方をご指摘・ご教授頂けると助かります。

0 件のコメント:

コメントを投稿