初級シスアドSQL過去問題解説

解答:エ

実行結果である「表B」を整理する。

抽出する列は、「部署コード」、「社員コード」と「名前」
→SELECT句
「表A」から「表B」を得ている
→FROM句
「表A」のすべての行が出ている(抽出条件なし)
→WHERE句
部署コードの昇順に並べ替えがおこなわれている
→ORDER BY句

以上からSELECT文を組み立てると、次のようになる。

SELECT 部署コード,社員コード,名前
FROM 表A
ORDER BY 部署コード ASC

*ORDER BY句の昇順の指定であるASCは省略可能である。省略すると、ASCが指定されているものとして実行される。なお、降順の指定はDESCである。

解答群アのWHERE句の「WHERE 部署コード <> NULL」の<>は否定(NOT)のことである。「部署コードがNULLでない」という意味である。

NULL(ヌル、ナル)は空っぽということである。何もデータが入力されていない状態のことである。空であって、スペース(空白)や数値の0ではない。 特にスペースはNULLと見た目が同じであることから、混同されやすいので注意して欲しい。

NULL

  • NULLとは、空っぽの(空値)のこと
  • スペース(空白)や数値の0とは別のものである

NULLであるかという条件の記述方法はこの問題の記述方法とは別にIS NULLを使って記述することができる。

NULLの判定方法
記述形式意味
列名 IS NULLNULLである
列名 NOT IS NULLNULLでない

この問題の解き方としては、実行結果よりSELECT文を考える方法を解説した。以下の点を明確にするのがポイントである。

SELECT文の考え方

  • 表示する列
  • 使用する表
  • 複数の表を使う場合は、どの列で結合するか
  • 抽出条件
  • 並べ替えを行うのか

スポンサードリンク

解答に時間はかかるが、解答群のSELECT文の実行結果を求めて、実行結果と一致するものを探す方法もある。それぞれのSELECT文の意味と実行結果を示しておくので参考にして欲しい。

SELECT *
→すべての列を抽出する
FROM 表A
→表Aより
WHERE 部署コード <> NULL
→部署コードがNULL(空値)であるものを抽出する
実行結果
社員コード名前部署コード給料
10010伊藤幸子101200,000
10020斉藤栄一201300,000
10030鈴木裕一101250,000
10040本田一弘102350,000
10050山田五郎102300,000
10060若山まり201250,000

SELECT 部署コード,社員コード,名前
→部署コード、社員コードと名前の列を抽出する
FROM 表A
→表Aより
実行結果
部署コード社員コード名前
10110010伊藤幸子
20110020斉藤栄一
10110030鈴木裕一
10210040本田一弘
10210050山田五郎
20110060若山まり

GROUP BY句でグループ化の指定をおこなっているが、GROUP BY句では、SELECT句でグループ集計関数以外のすべての列名が指定されていなくてはならない。構文エラーであるから、SELECT文は実行できない。

SELECT 部署コード,社員コード,名前
→部署コード、社員コードと名前の列を抽出する
FROM 表A
→表Aより
ORDER BY 部署コード
→部署コードの昇順に並べ替える
実行結果
部署コード社員コード名前
10110010伊東幸子
10110030鈴木裕一
10210040本田一弘
10210050山田五郎
20110020斎藤栄一
20110060若山まり
関連ページ
SQL講座 ソート(ORDER BY)