Напишите SQL-запрос, который выведет имена пользователей с третьего по седьмое в алфавитном порядке.

Как выбрать пять пользователей начиная с третьего после сортировки имен: OFFSET, LIMIT, дополнительный ключ для одинаковых имен и влияние колляции.

Короткий ответ

Что ответить на собеседовании

При допущении users(id, name), уникальном id и отсутствии NULL в name для PostgreSQL: SELECT name FROM users ORDER BY name ASC, id ASC LIMIT 5 OFFSET 2; Пропускаются первые две строки и выбираются следующие пять. id делает порядок одинаковых имен детерминированным, а алфавитный порядок зависит от колляции.

Подробный разбор

Ответ с пояснениями

Схема в исходном вопросе не задана. Предположим таблицу users(id, name), где id — уникальный идентификатор пользователя, а name не содержит NULL. Нужно получить именно пользователей на позициях с третьей по седьмую включительно, а не пять уникальных значений имени.

Для PostgreSQL подойдет запрос:

SELECT name
FROM users
ORDER BY name ASC, id ASC
LIMIT 5 OFFSET 2;

ORDER BY задает порядок до выбора нужного фрагмента. OFFSET 2 пропускает первые две строки, а LIMIT 5 берет следующие пять: 7 − 3 + 1 = 5. Если после первых двух пользователей осталось меньше пяти, запрос вернет только оставшиеся строки. Без явной сортировки порядок результата не гарантирован.

Дополнительная сортировка по id нужна для одинаковых имен: при неизменных данных она однозначно определяет их взаимный порядок. Добавлять DISTINCT без требования нельзя, иначе задача изменится и позиции будут отсчитываться среди уникальных имен.

«Алфавитный порядок» зависит от колляции: правил сравнения строк, включая регистр, язык и особенности букв. Перед решением стоит уточнить ожидаемые правила и использовать подходящую доступную колляцию выбранной СУБД. Если name допускает NULL, отдельно согласуйте, исключать ли таких пользователей или где размещать их при сортировке.

В других СУБД синтаксис ограничения строк может отличаться. Принцип остается тем же: сначала детерминированно отсортировать пользователей, затем пропустить две строки и взять пять.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку