■例題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です。
■まとめ
次の内容をチェックしましょう。
今回の範囲も第1回「リレーショナルデータベースの基本とSQL*PLUS」と同じく、正確に覚えておけば、点数が取れる内容です。確実に点が取れるようにしておきましょう。
今回の範囲は詳細な事柄が多く、あいまいにしてしまうことも多いと思います。しかし試験に合格するためには、細かい部分も確実に覚えておく必要があります。出題の可能性が高い範囲ですので、しっかり復習しておきましょう。
次回は、単一関数を使用した出力のカスタマイズについて、間違いやすい点にポイントを絞って説明します。
Copyright © ITmedia, Inc. All Rights Reserved.