基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成31年 春期 基本情報技術者 午後 問03
問03   5問選択

 定期健康診断のデータが登録されているデータベースに関する次の記述を読んで, 設問1〜3に答えよ。

 

 D中学校では,年に1回,定期健康診断を実施し,結果をデータベースに登録している。

 身長と体重の測定結果は,身長の単位は cm,体重の単位は kg として,いずれも 0.1 刻みで健診結果表に登録している。定期健康診断を受ける生徒の生年月日, 性別などの属性情報は,受診者情報表に登録している。

 健診結果表を作成する SQL 文の一部と,受診者情報表を作成する SQL 文を次に示す。

 

 ここで,DECIMAL(x,y) は固定小数点数を扱うデータ型であり,x は精度であって, 表示する数字の桁数を示し,y は位取りであって,小数点以下の数字の桁数を示す。 例えば,データベースに 175.5 を登録するには,x に 4 を,y に 1 を指定する。

 健診結果表及び受診者情報表のデータ(以下,定期健康診断データという)から, 身長と体重を統計データとして参照するために,測定結果ビューを使用する。 測定結果ビューを作成する SQL 文を次に示す。

 

CREATE VIEW 測定結果ビュー( 年度,学年,性別,生年月日,身長,体重 )AS
  SELECT 健診結果表.年度,健診結果表.学年,
    CASE 受診者情報表.性別
     WHEN Ø THEN '男'
     WHEN 1 THEN '女'
     ELSE '−'
    END,
    受診者情報表.生年月日,健診結果.表身長,健診結果表.体重
  FROM 健診結果表,受診者情報表
  WHERE 健診結果表.受診者ID = 受診者情報表.受診者ID

 

設問1  2010 年度から 2019 年度までの定期健康診断データを基に, 男子生徒の体格の推移を見る。次の SQL 文の実行結果を用いて, 図1に示す体格推移表を作成した。平均身長と平均体重は小数第2位を四捨五入した値である。 SQL 文の に入れる正しい答えを, 解答群の中から選べ。ここで,c1 と c2 に入れる答えは,c に関する解答群の中から 組合せとして正しいものを選ぶものとする。

 

SELECT 年度,学年,性別,
  AVG(身長) AS 平均身長,MAX(身長) AS 最大身長,MIN(身長) AS 最小身長,
  AVG(体重) AS 平均体重,MAX(体重) AS 最大体重,MIN(体重) AS 最小体重
FROM 測定結果ビュー WHERE 年度 AND 性別 =
GROUP BY 年度,学年,性別
ORDER BY 年度 ,学年

図1 体格推移表

 

a に関する解答群 ア LIKE '2Ø1_'     イ LIKE '2Ø1Ø'     ウ LIKE '2Ø19'

エ = '2Ø1%'      オ = '2Ø1_'       カ = '2Ø1*'

 

b に関する解答群 ア Ø      イ 1       ウ '男'

エ '女'     オ '−'

 

c に関する解答群
      c1      c2   
 ア ASC   ASC  
 イ ASC DESC  
 ウ DESC ASC
 エ DESC DESC
解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

解答 c ←クリックすると正解が表示されます

 

設問2  次の記述中の に入れる正しい答えを,解答群の中から選べ。

 

 D中学校では,転入生を受け入れる場合,転出元の中学校から受領した定期健康診断の 結果の情報をデータベースに登録する。健診結果表には,受診者 ID と 年度に 制約を設定し, 受診者 ID に受診者情報表の受診者 ID への 制約を設定している。 この制約に従うと,転入生の定期健康診断の結果の情報の健診結果表への登録は, 受診者情報表に転入生の情報を登録した後に行う必要がある。

 

d,e に関する解答群 ア UNIQUE       イ 検査       ウ 参照

エ 主キー       オ 非 NULL

解答 d ←クリックすると正解が表示されます

解答 e ←クリックすると正解が表示されます

 

設問3  次の記述中の に入れる正しい答えを,解答群の中から選べ。

 

 図2に示す身長階級表を作成し,これに対応させて,2019 年度の男子生徒の 定期健康診断データを基に,図3に示す身長度数分布表を作成したところ, “人数が相違している”との指摘があった。

 

図2 身長階級表         図3 身長度数分布表

 

 図3に示す身長度数分布表の作成は,次の (1)〜(3) の手順で行った。

(1) 図2に示す身長階級表をデータベースに作成した。

(2) 新たな SQL 文を作成した。

(3) (2) で作成した SQL 文の実行結果を用いて,図3に示す身長度数分布表を作成した。

 

 調査の結果,(2) で作成した SQL 文に誤りがあることが分かった。(2) で作成した SQL 文は, 次のとおりである。この SQL 文は,対象とした全生徒を必ずいずれかの身長区分に分類して集計するために, 身長階級表からは全レコードを,測定結果ビューからは ON 句に指定した結合条件に一致するレコードを抽出している。

 

SELECT 身長階級,階級下限,COUNT(*) AS 人数
FROM 測定結果ビュー RIGHT OUTER JOIN 身長階級表 ON
  身長 BETWEEN 階級下限 AND 階級上限
  AND 年度 = '2Ø19'
  AND 性別 = '男'
GROUP BY 身長階級,階級下限,階級上限
ORDER BY 階級下限 ASC

 図1を見ると,2019 年度は男子全学年での最大身長が 180.1cm であり, 190cm 以上の生徒は存在しないが,図3の身長度数分布表では, 190cm 以上の人数が1となっている。この原因は, (2) で作成した SQL 文では とすべき箇所を COUNT(*) としていることにある。 その結果,測定結果ビューと身長階級表を結合した結果において, NULL となっているレコードもカウントしているからである。

 

f に関する解答群 ア COUNT(身長)     イ COUNT(身長階級)      ウ MAX(身長)

エ MAX(身長階級)    オ 身長           カ 身長階級

解答 f ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]