Postgresql 按SELECT子句中创建的列进行筛选,无需重复逻辑或使用CTE

Postgresql 按SELECT子句中创建的列进行筛选,无需重复逻辑或使用CTE,postgresql,Postgresql,假设我有一个表,其中包含a和b的数值,我想输出一个a和b之和的表,但仅限于大于5的地方。像这样: SELECT a + b AS c FROM t WHERE a + b > 5 有没有什么优雅的方法可以做到这一点而不重复a+b(在我的例子中,这是一个非常复杂的算法,我想在不需要在两个地方进行调整的情况下进行调整),也不需要将整个过程放入CTE,然后根据c进行过滤?理想情况下,一些简单的事情(虽然我知道这些不起作用)“c>5”或“c>5”。你可以这样做: select d.c from

假设我有一个表,其中包含a和b的数值,我想输出一个a和b之和的表,但仅限于大于5的地方。像这样:

SELECT a + b AS c
FROM t
WHERE a + b > 5

有没有什么优雅的方法可以做到这一点而不重复a+b(在我的例子中,这是一个非常复杂的算法,我想在不需要在两个地方进行调整的情况下进行调整),也不需要将整个过程放入CTE,然后根据c进行过滤?理想情况下,一些简单的事情(虽然我知道这些不起作用)“c>5”或“c>5”。

你可以这样做:

select d.c from
(
SELECT a + b AS c
FROM t
) as d
WHERE d.c > 5
(请注意,这不是CTE,它是一个子表,但这可能正是您的意思)


当然,另一种方法是创建视图

您可以这样做:

select d.c from
(
SELECT a + b AS c
FROM t
) as d
WHERE d.c > 5
(请注意,这不是CTE,它是一个子表,但这可能正是您的意思)

当然,另一种方法是创建一个视图

使用