Выбор ответа Junior SELECT и фильтрация спрашивают часто обновлено

Псевдоним из SELECT в WHERE

Вопрос

Что произойдёт при выполнении запроса в PostgreSQL?

SELECT title, price * 2 AS doubled
FROM products
WHERE doubled > 100;

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Ошибка: колонки doubled не существует. Логически WHERE выполняется раньше SELECT, и на этом шаге псевдонима doubled ещё нет, поэтому PostgreSQL сообщает, что такой колонки не существует.

Варианты ответа

  1. Ошибка: колонки doubled не существуетправильный ответ
  2. Запрос выполнится и вернёт товары с удвоенной ценой больше 100
  3. Запрос выполнится, но условие doubled > 100 будет проигнорировано
  4. Ошибка только если в таблице нет строк

Разбор

Логически WHERE выполняется раньше SELECT, и на этом шаге псевдонима doubled ещё нет, поэтому PostgreSQL сообщает, что такой колонки не существует. Условие надо повторить выражением: WHERE price * 2 > 100, или завернуть запрос в подзапрос. Условие не игнорируется молча, а наличие строк не влияет на разбор запроса. В ORDER BY псевдоним использовать можно.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.