在下面的查询中,参数 date_part('year', CURRENT_DATE) - f.birth_year
重复三次。如何用它的别名替换它 age
?
SELECT
date_part('year', CURRENT_DATE) - f.birth_year AS age
FROM
public.foo f
WHERE
date_part('year', CURRENT_DATE) - f.birth_year >=20 AND
date_part('year', CURRENT_DATE) - f.birth_year <=30
2条答案
按热度按时间6qqygrtg1#
你不能重复使用
select
中的别名where
条款。您需要重复表达式,或者使用子查询或cte。不管它值多少钱,你都可以用
between
只表达一次而不是两次where
条款:至于子查询解决方案,应该是:
ruyhziif2#
cte允许您命名表达式,以避免重复它们。顺便说一下,这不是年龄的正确计算方法: