В таблице users поле last_login может быть NULL (пользователь ни разу не заходил). Нужно отсортировать пользователей так, чтобы самые недавно заходившие были сверху, а NULL значения оказались внизу. Какая сортировка правильная?

AORDER BY last_login DESC
BORDER BY last_login DESC NULLS FIRST
CORDER BY last_login ASC NULLS LAST
DORDER BY last_login DESC NULLS LAST
Правильный ответ. Явно указывайте положение NULL в сортировке через NULLS FIRST или NULLS LAST, чтобы не зависеть от дефолтов.

Разбор

Нужно два требования: порядок по свежести (это DESC) и размещение пропусков внизу (NULLS LAST). Поэтому корректно ORDER BY last_login DESC NULLS LAST. Если NULL не указать явно, поведение может отличаться между СУБД или настройками, а для отчётов и витрин лучше иметь предсказуемый порядок.

Проверь себя · 1/3разбор после ответа
В таблице orders поле cancelled_at заполняется только для отменённых заказов, а для активных — NULL. Какой фильтр выберет активные (не отменённые) заказы?
Тренировать SQL в Telegram

Ещё вопросы по теме «Основы SQL-запросов»