将计算结果存储在select语句(postgres)中

时间:2019-05-15 12:13:45

标签: postgresql select stored-procedures calculated-columns

我想运行如下查询:

select
  sqrt(pow(sin(foo), 2)) + sqrt(1 - pow(sin(foo), 2)) as calc_value
from mytable

如果我不介意重复pow(sin(foo))(实际上是复杂得多的计算),这很容易。如何存储此调用(和其他调用)的结果,例如(伪代码):

select
  (
    a = pow(sin(foo))
    return sqrt(a) + sqrt(1 - a)
  ) as calc_value
from mytable

我知道我可以使用子查询,但是对于此应用程序,我想避免这种情况。

我也知道我可以编写一个存储过程,但是如果可能的话,我也想避免这种情况。

谢谢。

1 个答案:

答案 0 :(得分:0)

只需使用横向函数联接:

SELECT sqrt(a) + sqrt(1 - a) AS calc_value
FROM mytable, pow(sin(foo), 2) AS a;

在线示例:https://dbfiddle.uk/?rdbms=postgres_11&fiddle=de5e492db3476d3d055e9bfc2e917414

我认为在不退回到原始查询的情况下,还有其他解决方案可用于续集。

这是您的决定:执行性能与序列化代码的难易程度。