SQL tricks
January 22, 2023

FETCH FIRST … ROWS WITH TIES

В этой статье я хочу показать новще решение распостраненной задачи. Найти в таблице записи с максимальным значением в одной из колонок.
Для примера мы будем искать сотрудников с максимальной зарплатой.

Стандартное решение состоит в том чтобы найти максимальное значенеи с столбце зарплата и затем использоват его в качестве фильтра.

select * 
from employees
where salary = (select max(salary) from employees);

Однако стандарт SQL:2008 предлагает новое решение данной задачи: FETCH FIRST … ROWS WITH TIES

select * 
from employees
order by salary desc
fetch first 1 rows with ties;

Стаким же успехом используя конструкцию FETCH FIRST … ROWS WITH TIES легко решается задача по поиску N максимальных.минимальных значений решение которой другими способми уже не так тривиально

https://sqlize.online/sql/psql13/50703dc61c4b65b38ffaa338bbe7f683/