SQL SELECT文を使用したデータの取得、制限およびソート7 / 50 問

以下の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          3000

ONLYとWITH TIESの違い

指定返される行
FETCH FIRST <N> ROWS ONLYN行
FETCH FIRST <N> ROWS WITH TIESN行+N行目と同一値の行

WITH TIESはORDER BY句の値で同順位を判定するため、ORDER BY句とあわせて使用します。

前後の問題