メインメニュー第20回メニュー > 問題と解説
 

第20回J検準2級 情報リテラシー応用 問題6


問題6 次のデータベースに関する記述を読み,設問に答えよ。
 
1.データ検索のためのSQL文の書式は,次のとおりである。
 
SELECT 列名,列名,・・・
    FROM  表名,表名,・・・
    WHERE 条件式
    ORDER BY 列名 ASC または DESC
    GROUP BY 列名 HAVING 条件式
 
 ここで,列名とは検索したい列の名であり,カンマで区切ることにより複数の列名の指定ができる。列名を列挙する代わりに*を書くことで,すべての列の指定もできる。条件式は,特定の条件にあったデータを抽出するために指定する。条件の指定には,関係演算子(=,<,<=,>,>=)や論理演算子(AND,OR,NOT)を利用できる。また論理演算子の優先順は,NOT,AND,ORの順である。
 ORDER BYを指定すると,列の内容で昇順(ASC)または降順(DESC)に並べ替えを行う。なお,昇順に並べ替えを行う場合は,ASCを省略できる。
 GROUP BYを指定すると,指定した列の内容が一致するレコードを1つのレコードにまとめること(グループ化)ができる。なお,グループ化された後の値はグループごとに1つでなければならない。またグループ化するときの条件指定にはHAVINGを使用する。
 SUM(合計),AVG(平均),MAX(最大),MIN(最小),COUNT(件数カウント)などの集計関数を用いることができる。関数は,関数名(列名)と指定する。ただし,WHEREに続く条件式の中で集計関数を使うことはできない。
 条件式の中でもう1つのSELECTを記述できる。この場合,内側((2))のSELECTによりデータが抽出され,その結果を外側((1))のSELECTの条件に使用できる。
 
(1)SELECT ・・・
    WHERE ・・・
     (2)(SELECT・・・)
 
 特定のパターンを検索する場合にはLIKE述語を使用する。この場合,WHEREは次のように記述する。
 
WHERE 条件式 LIKE 検索パターン
 
 検索のパターンを以下に示す。
XX_ 先頭からXXで始まる3文字のデータを検索する
_XX 最後がXXで終わる3文字のデータを検索する
_XX_ 真ん中がXXという4文字のデータを検索する
XX% 先頭からXXで始まるデータを検索する
%XX 最後がXXで終わるデータを検索する
%XX% 任意の位置にXXを含むデータを検索する
なお,_は任意の1文字を示し,%は任意の0文字以上の文字列を示す。
 
1.  J市観光協会では,観光客からの宿泊施設の照会をデータベースを用いて行うことにした。このため以下のような表を用意して,目的の内容を取り出す各種SQL文を作ることにした。
 
表 宿泊施設表
施設No 施設名 区分 TEL 宿泊料金 備考
1 ローヤル H 0X-2X-5211 10000 露家送
2 水明館 J 0X-2X-1280 25000 露家送
3 ベルクラント P 0X-2X-8963 7000 家送
4 吉田屋 J 0X-2X-7500 15000 露送
5 ハト H 0X-2X-4126 10000 露送
6 南風 P 0X-2X-1234 6000
7 ロッジつばさ P 0X-2X-0001 5000
8 センチュリー H 0X-2X-9000 10000 家送
9 八雲 J 0X-2X-9876 20000 露家送
10 レイクサイド H 0X-2X-2222 12000 露送
 
 区分のHはホテル,Jは旅館,Pはペンションを示す。
備考の「露」は露天風呂あり,「家」は家族風呂あり,「送」は送迎ありを示す。また「−」は,備考に記入すべきデータがないことを示している。
 
 
<設問1> 次のデータを抽出するためのSQL文として,最も適切なものを解答群から選べ。
 
(1)  宿泊料金の高い順に施設名と宿泊料金を抽出する。
 
(1)の解答群
ア. SELECT 施設名,宿泊料金 FROM 宿泊施設表
 ORDER BY 宿泊料金
イ. SELECT 施設名,宿泊料金 FROM 宿泊施設表
 ORDER BY 宿泊料金 DESC
ウ. SELECT 施設名,宿泊料金 FROM 宿泊施設表
 WHERE 宿泊料金 >
   (SELECT MIN(宿泊料金) FROM 宿泊施設表)
エ. SELECT 施設名,宿泊料金 FROM 宿泊施設表
 WHERE 宿泊料金 >
   (SELECT MAX(宿泊料金) FROM 宿泊施設表)
 
(2)  宿泊料金が最も安い旅館を抽出する。
 
(2)の解答群
ア. SELECT * FROM 宿泊施設表
 WHERE 宿泊料金 =
  (SELECT MIN(宿泊料金) FROM 宿泊施設表
     WHERE 区分 = 'J')
イ. SELECT * FROM 宿泊施設表
 WHERE 区分 = 'J' AND 宿泊料金 =
  (SELECT MIN(宿泊料金) FROM 宿泊施設表)
ウ. SELECT * FROM 宿泊施設表
  WHERE 区分 = 'J' OR 宿泊料金 =
   (SELECT MIN(宿泊料金) FROM 宿泊施設表)
エ. SELECT * FROM 宿泊施設表
 WHERE 区分 = 'J' AND 宿泊料金 >= 15000
注:アで正解になりますが,最も安い旅館と同じ宿泊料金がホテルやペンションにもあった場合,主問い合わせでそれらも抽出されてしまいます。
 
(3)  家族風呂がある施設名を検索する。
 
(3)の解答群
ア. SELECT 施設名 FROM 宿泊施設表
 WHERE 備考 LIKE '%家'
イ. SELECT 施設名 FROM 宿泊施設表
 WHERE 備考 LIKE '家%'
ウ. SELECT 施設名 FROM 宿泊施設表
 WHERE 備考 LIKE '%家%'
エ. SELECT 施設名 FROM 宿泊施設表
 WHERE 備考 LIKE '家'
 
 
<設問2> 次のSQL文によって抽出されるデータを解答群から選べ。
 
(4)  SELECT 区分,AVG(宿泊料金) FROM 宿泊施設表
  GROUP BY 区分
 
(4)の解答群
ア.
H 12000
J 25000
P 7000
イ.
H 10500
J 20000
P 6000
       
ウ.
H 10000
J 15000
P 5000
エ.
H 42000
J 60000
P 18000
 
(5) SELECT 施設名 FROM 宿泊施設表
 WHERE 宿泊料金 >= 10000 AND 宿泊料金 < 12000
 
(5)の解答群
ア.
ロッジつばさ
南風
ベルクラント
イ.
八雲
吉田屋
水明館
       
ウ.
ローヤル
ハト
センチュリー
レイクサイド
エ.
ローヤル
ハト
センチュリー
 
(6) SELECT COUNT(*) FROM 宿泊施設表
 WHERE 宿泊料金 >
  (SELECT AVG(宿泊料金) FROM 宿泊施設表)
 
(6)の解答群
ア.
1
イ.
2
       
ウ.
3
エ.
4
 

 
メニューに戻る
 

Certain right called neighbouring on copyright kimura-kouichi