Вы не можете повторно использовать псевдоним select
в предложении where
. Вам нужно повторить выражение или использовать подзапрос или cte.
Что бы это ни стоило, вы можете использовать between
, чтобы выражение было только один раз вместо двух в предложении where
:
SELECT date_part('year', CURRENT_DATE) - f.birth_year AS age
FROM public.foo f
WHERE date_part('year', CURRENT_DATE) - f.birth_year BETWEEN 20 AND 30
Что касается решения подзапроса, это будет:
SELECT *
FROM (
SELECT date_part('year', CURRENT_DATE) - f.birth_year AS age
FROM public.foo
) f
WHERE age BETWEEN 20 AND 30