以下のSQL文で、どのような順序で行が返されますか。
SELECT employee_id, commission_pct FROM employees;
EMPLOYEE_ID COMMISSION_PCT
------------ ---------------
100 .2
101 .4
102 .1
103
104 .3
SELECT employee_id, commission_pct
FROM employees
ORDER BY commission_pct DESC NULLS LAST;A103→101→104→100→102
B101→104→100→102→103✓
C102→100→104→101→103
D103→102→100→104→101
正解:B解説
NULLS FIRST/NULLS LASTを指定すると、ORDER BY句でソートしたときのNULLの表示位置を指定できます。
今回はDESCで降順(.4→.3→.2→.1)に並べたうえでNULLS LASTを指定しているため、NULLの行(103)が最後に返されます。
SELECT employee_id, commission_pct
FROM employees
ORDER BY commission_pct DESC NULLS LAST;
EMPLOYEE_ID COMMISSION_PCT
------------ ---------------
101 .4
104 .3
100 .2
102 .1
103NULLの表示位置の既定値
| 並び順 | 既定のNULLの位置 |
|---|---|
| 昇順(ASC) | 最後(NULLS LAST) |
| 降順(DESC) | 先頭(NULLS FIRST) |
Oracle DatabaseではNULLを「最大の値」として扱うため、降順ではNULLが先頭になります。
各選択肢の並び順
| 選択肢 | 該当するORDER BY句 |
|---|---|
| A | ORDER BY commission_pct DESC(既定) |
| B | ORDER BY commission_pct DESC NULLS LAST |
| C | ORDER BY commission_pct ASC(既定) |
| D | ORDER BY commission_pct ASC NULLS FIRST |