第10問
勤務実態を把握するため、部署ごとに月の平均残業時間を調査することになっ た。そこで、以下のようなSQL 文でデータベースに問い合わせをすることにし た。データテーブルは、以下のつである。 テーブル名:月の残業時間 従業員ID 氏名 所属ID 残業時間 A01002 鈴木英子 101 4 A01079 佐藤浩司 102 10 A02014 高木有一 101 4 A02043 田中真一 103 3 A04081 赤城和郎 102 11 A05047 本田まり 103 2 A05051 藤田二郎 102 12 テーブル名:部署 部署ID 部署名 101 個人営業部 102 法人営業部 103 経 理 部 SQL 文 SELECT , ,AVG(残業時間)FROM , WHERE .所属ID = .部署ID GROUP BY , ― 10― ◇M6(743―149) (
設問1
) SQL 文の空欄~に入る最も適切なものの組み合わせはどれか。
- ア :月の残業時間 :所属ID :部署ID :部署名
- イ :月の残業時間 :部署ID :氏 名 :所属ID
- ウ :所属ID :部署ID :部署名 :従業員ID
- エ :部署ID :部署名 :月の残業時間 :部 署 (
設問2
) SQL 文の空欄、に入る最も適切なものの組み合わせはどれか。
- ア :月の残業時間 :残業時間
- イ :従業員ID :月の残業時間
- ウ :所属ID :部署ID
- エ :部署ID :部署名 ― 11― ◇M6(743―150)
▼ 解答・解説を見る
正解: 設問1 エ 設問2 エ
解答:設問1=エ、設問2=エ
〔SQLによる部署別平均残業時間の集計〕「月の残業時間」テーブルと「部署」テーブルを結合し、部署ごとに残業時間の平均を求める問い合わせを完成させる。2つのテーブルは「月の残業時間.所属ID=部署.部署ID」で結びつく。
設問1(FROM・WHERE・GROUP BY周りの空欄):エ
- 結合の対象となる2つのテーブルは「部署」と「月の残業時間」であり、結合条件は両者を対応づける「部署ID」と「所属ID」。部署ごとに集計するためGROUP BYには結合キーと出力する「部署名」を指定する。
- 各選択肢を当てはめると、テーブル名・結合キー・GROUP BY項目の整合がとれるのは選択肢エのみ(部署ID/部署名/月の残業時間/部署の対応が成立)。他の選択肢はテーブル名や結合キーの対応が崩れ、結合条件「所属ID=部署ID」と矛盾する。
- よってエ。
設問2(SELECTで出力する列の空欄):エ
- SELECT句では集計の単位を識別する列を出力する。部署別集計なので「部署ID」と「部署名」を選び、これにAVG(残業時間)を加える形が妥当。
- 集計キーでない「氏名」「従業員ID」や、実体のない値を出力する組み合わせは、GROUP BY(部署単位)と整合しない。部署ID・部署名の組を出力する選択肢エが正しい。
- よってエ。
したがって設問1=エ、設問2=エ。