“社員”表と“人事異動”表から社員ごとの勤務成績の平均を求める適切なSQL文はどれか。
ここで、求める項目は、社員コード、社員名、勤務成績(平均)の3項目とする。
社員
社員コード |
社員名 |
性別 |
生年月日 |
入社年月日 |
O1553 |
太田 由美 |
女 |
1970-03-10 |
1990-04-01 |
S3781 |
佐藤 義男 |
男 |
1943-11-20 |
1975-06-11 |
O8665 |
太田 由美 |
女 |
1978-10-13 |
1999-04-01 |
|
人事異動
社員コード |
配属部門 |
配属年月日 |
担当勤務内容 |
勤務成績 |
O1553 |
総務部 |
1990-04-01 |
広報(社内報) |
69.0 |
O1553 |
営業部 |
1998-07-01 |
顧客管理 |
72.0 |
S3781 |
資材部 |
1975-06-11 |
仕入在庫管理 |
70.0 |
S3781 |
経理部 |
1984-07-01 |
資金計画 |
81.0 |
S3781 |
企画部 |
1993-07-11 |
会社組織、分掌 |
95.0 |
O8665 |
秘書室 |
1999-04-01 |
受付 |
70.0 |
|
ア |
SELECT 社員.社員コード, 社員名, AVG(勤務成績) AS “勤務成績(平均)”
FROM 社員, 人事異動
WHERE 社員.社員コード = 人事異動.社員コード
GROUP BY 勤務成績 |
イ |
SELECT 社員.社員コード, 社員名, AVG(勤務成績) AS “勤務成績(平均)”
FROM 社員, 人事異動
WHERE 社員.社員コード = 人事異動.社員コード
GROUP BY 社員.社員コード, 社員.社員名 |
ウ |
SELECT 社員.社員コード, 社員名, AVG(勤務成績)/COUNT(勤務成績) AS “勤務成績(平均)”
FROM 社員, 人事異動
WHERE 社員.社員コード = 人事異動.社員コード
GROUP BY 社員.社員コード, 社員.社員名 |
エ |
SELECT 社員.社員コード, 社員名, MAX(勤務成績)/COUNT(*) AS “勤務成績(平均)”
FROM 社員, 人事異動
WHERE 社員.社員コード = 人事異動.社員コード
GROUP BY 社員.社員コード, 社員.社員名 |
答え イ
【解説】
“AVG()”が平均値を求めるSQL句なので選択肢ウの“AVG(勤務成績)/COUNT(勤務成績)”は平均値を求める内容になっていない。また、選択肢エの“MAX(勤務成績)/COUNT(*)”は勤務成績に最大値(MAX)を使っているのでこれも平均値にはならない。
また、同じ社員の情報をまとめるための“GROUP BY”句で使用する属性は社員コード及び社員名である。
【キーワード】
・AVG
・GROUP BY
【キーワードの解説】
- AVG
複数のレコードの指定された属性の平均値を求めるSQL文です。
- GROUP BY
指定された属性の値が一致するレコードをまとめるSQL文です。
もっと、「SQL」について調べてみよう。
戻る
一覧へ
次へ
|