Выбор ответа Junior SELECT и фильтрация спрашивают часто обновлено
Псевдоним из SELECT в WHERE
Вопрос
Что произойдёт при выполнении запроса в PostgreSQL?
SELECT title, price * 2 AS doubled
FROM products
WHERE doubled > 100;
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Ошибка: колонки doubled не существует. Логически WHERE выполняется раньше SELECT, и на этом шаге псевдонима doubled ещё нет, поэтому PostgreSQL сообщает, что такой колонки не существует.
Варианты ответа
- Ошибка: колонки
doubledне существуетправильный ответ - Запрос выполнится и вернёт товары с удвоенной ценой больше 100
- Запрос выполнится, но условие
doubled > 100будет проигнорировано - Ошибка только если в таблице нет строк
Разбор
Логически WHERE выполняется раньше SELECT, и на этом шаге псевдонима doubled ещё нет, поэтому PostgreSQL сообщает, что такой колонки не существует. Условие надо повторить выражением: WHERE price * 2 > 100, или завернуть запрос в подзапрос. Условие не игнорируется молча, а наличие строк не влияет на разбор запроса. В ORDER BY псевдоним использовать можно.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.