以下のSQL文で、何行のデータが返されますか。
SELECT employee_id, salary FROM employees;
EMPLOYEE_ID SALARY
------------ -------
100 5000
101 4000
102 3000
103 3000
104 2000
SELECT employee_id, salary
FROM employees
ORDER BY salary DESC
FETCH FIRST 3 ROWS WITH TIES;A3行
B4行✓
C5行
Dエラーになる
正解:B解説
FETCH FIRST <N> ROWS WITH TIESは、先頭からN行を返したうえで、N行目と同一の値が存在する場合は追加で返します。
3行目の給与は3000で、4行目(103)も同じ3000のため、4行が返されます。
SELECT employee_id, salary
FROM employees
ORDER BY salary DESC
FETCH FIRST 3 ROWS WITH TIES;
EMPLOYEE_ID SALARY
------------ -------
100 5000
101 4000
102 3000
103 3000ONLYとWITH TIESの違い
| 指定 | 返される行 |
|---|---|
| FETCH FIRST <N> ROWS ONLY | N行 |
| FETCH FIRST <N> ROWS WITH TIES | N行+N行目と同一値の行 |
WITH TIESはORDER BY句の値で同順位を判定するため、ORDER BY句とあわせて使用します。