初級シスアド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を使って記述することができる。
記述形式 | 意味 |
---|---|
列名 IS NULL | NULLである |
列名 NOT IS NULL | NULLでない |
この問題の解き方としては、実行結果よりSELECT文を考える方法を解説した。以下の点を明確にするのがポイントである。
SELECT文の考え方
- 表示する列
- 使用する表
- 複数の表を使う場合は、どの列で結合するか
- 抽出条件
- 並べ替えを行うのか
スポンサードリンク
解答に時間はかかるが、解答群のSELECT文の実行結果を求めて、実行結果と一致するものを探す方法もある。それぞれのSELECT文の意味と実行結果を示しておくので参考にして欲しい。
ア
- SELECT *
- →すべての列を抽出する
- FROM 表A
- →表Aより
- WHERE 部署コード <> NULL
- →部署コードがNULL(空値)であるものを抽出する
社員コード | 名前 | 部署コード | 給料 |
---|---|---|---|
10010 | 伊藤幸子 | 101 | 200,000 |
10020 | 斉藤栄一 | 201 | 300,000 |
10030 | 鈴木裕一 | 101 | 250,000 |
10040 | 本田一弘 | 102 | 350,000 |
10050 | 山田五郎 | 102 | 300,000 |
10060 | 若山まり | 201 | 250,000 |
イ
- SELECT 部署コード,社員コード,名前
- →部署コード、社員コードと名前の列を抽出する
- FROM 表A
- →表Aより
部署コード | 社員コード | 名前 |
---|---|---|
101 | 10010 | 伊藤幸子 |
201 | 10020 | 斉藤栄一 |
101 | 10030 | 鈴木裕一 |
102 | 10040 | 本田一弘 |
102 | 10050 | 山田五郎 |
201 | 10060 | 若山まり |
ウ
GROUP BY句でグループ化の指定をおこなっているが、GROUP BY句では、SELECT句でグループ集計関数以外のすべての列名が指定されていなくてはならない。構文エラーであるから、SELECT文は実行できない。
エ
- SELECT 部署コード,社員コード,名前
- →部署コード、社員コードと名前の列を抽出する
- FROM 表A
- →表Aより
- ORDER BY 部署コード
- →部署コードの昇順に並べ替える
部署コード | 社員コード | 名前 |
---|---|---|
101 | 10010 | 伊東幸子 |
101 | 10030 | 鈴木裕一 |
102 | 10040 | 本田一弘 |
102 | 10050 | 山田五郎 |
201 | 10020 | 斎藤栄一 |
201 | 10060 | 若山まり |
- 関連ページ
- SQL講座 ソート(ORDER BY)