SQLでのデータの制限とソート間違いやすいポイントを追え! Bronze SQL基礎I(3)(2/2 ページ)

» 2008年05月16日 00時00分 公開
前のページへ 1|2       

問い合わせによって取得される行のソート(ORDER BY句)

例題3

SALARY列を降順に並べ替えている、正しいSQL文を選択してください。

a.select last_name,salary from employees

  order by salary;

b.select last_name,salary from employees

  order by salary asc;

c.select last_name,salary from employees

  order by salary desc;

d.select last_name,salary sal from employees

  order by sal desc;

e.select last_name,salary sal from employees

  order by 2 desc;

f.select last_name,salary sal from employees

  order by 3 desc;

例題の範囲をおさらい

参考:「SQL問い合わせによる行の制限とソート

 問い合わせた行をソートして戻すには、SELECT文の最後でORDER BY句を使用します。

ORDER BY 行をソートすることの宣言(列名、列別名、列位置の指定が可)
ASC 行を昇順ソートする(デフォルト)
DESC 行を降順ソートする

正解

c、d、e

解説

選択肢a:ORDER BYは、デフォルトでは行を昇順にソートします。このSQL文にはオプションの降順指定がありませんので、昇順にソートされます。

SQL> select last_name,salary from employees
  2  order by salary;
LAST_NAME                SALARY
-------------------- ----------
Vargas                     2500
Matos                      2600
Davies                     3100

選択肢b:オプションで「ASC」を指定しているため、昇順にソートされます。

選択肢c:オプションで「DESC」を指定しているため、降順にソートされます。

SQL> select last_name,salary from employees
  2  order by salary desc;
LAST_NAME                SALARY
-------------------- ----------
King                      24000
Kochhar                   17000
De Haan                   17000

選択肢d:ORDER BYには列の別名も指定可能です。ここではSALARY列の別名を「sal」に指定しています。それとは別にオプションで「DESC」を指定しているため、結果は降順にソートされます。

選択肢e:ORDER BYには列位置も指定可能です。selectで指定されている列はLAST_NAMEとSALARYであり、LAST_NAMEの列位置は1、SALARYの列位置は2となります。

選択肢f:同様に列位置を指定していますが、「3」に当たる列は存在しないためエラーとなります(「sal」は列別名であり、列ではありません)。

SQL> select last_name,salary sal from employees
  2  order by 3 desc;
order by 3 desc
         *
行2でエラーが発生しました。:
ORA-01785: ORDER BY項目は、SELECTリスト式の数値である必要があります

 問題文では「計算結果が戻ってこない」SQL文を尋ねています。こちらはもともと正常なSQL文ではないため、正解とはなりません。

 よって、SALARY列を降順に並べ替えているSQL文はc、d、eです。

まとめ

 次の内容をチェックしましょう。

  • WHERE句で使用する比較演算子(BETWEEN、
  • ORDER BY句の指定、行をソートする方法

 今回の範囲も第1回「リレーショナルデータベースの基本とSQL*PLUS」と同じく、正確に覚えておけば、点数が取れる内容です。確実に点が取れるようにしておきましょう。

 今回の範囲は詳細な事柄が多く、あいまいにしてしまうことも多いと思います。しかし試験に合格するためには、細かい部分も確実に覚えておく必要があります。出題の可能性が高い範囲ですので、しっかり復習しておきましょう。

 次回は、単一関数を使用した出力のカスタマイズについて、間違いやすい点にポイントを絞って説明します。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。