データベーススペシャリスト平成29年春期 午前Ⅱ 問8

問8

"社員"表から,部署コードごとの主任の人数と一般社員の人数を求めるSQL文とするために,aに入る字句はどれか。ここで,実線の下線は主キーを表す。
08.png/image-size:467×285
  • THEN 1 ELSE -1
  • THEN 1 ELSE 0
  • THEN 1 ELSE NULL
  • THEN NULL ELSE 1

分類

テクノロジ系 » データベース » データ操作

正解

解説

SQLのSELECT文内でCASE句を使用すると、プログラムのif~else構造のように列の値が条件式に合致するかどうかによって返す値を変えることができます。
CASE
 WHEN {条件式} THEN {真の場合の値}
 WHEN {条件式} THEN {真の場合の値}
 :
 ELSE {偽の場合の値}
END
設問のSQL文ではCASE文がCOUNT関数の引数として使用されています。COUNTは値がNULLではない行を集計対象とするので、条件に合致した行には"NULL以外"、条件に合致しなかった行には"NULL"を返せば正しい行数が出力されるはずです。したがってaに入る適切な文字列は「THEN 1 ELSE NULL」になります。
  • COUNTは値が"-1"であっても1行として数えてしまうので不適切です。
  • COUNTは値が"0"であっても1行として数えてしまうので不適切です。
  • 正しい。
  • 真偽で返す値が逆です。
© 2016-2024 データベーススペシャリストドットコム All Rights Reserved.

Pagetop