postgresql物化视图错误:负数的非整数幂产生复杂的结果

Mi *_* Ro 2 postgresql materialized-view postgresql-13

我有复杂的计算视图,但一行会产生问题

ROUND((((latest_revenue::numeric/ oper_reve_3y_old::numeric) ^ (1/3::numeric)) -1::numeric)*100::numeric)
Run Code Online (Sandbox Code Playgroud)

当我执行查询时,计算工作正常,当我在视图中使用它时,一切正常,但是如果我尝试使用此语句创建物化视图,则会出现错误

“负数的非整数幂会产生复杂的结果”

有什么方法可以在物化视图中使用它吗?或者是否有一些解释为什么这仅适用于物化视图?

Lau*_*lbe 6

如果查询整个视图,您将得到相同的错误:

SELECT * FROM view_name;
Run Code Online (Sandbox Code Playgroud)

使用视图时您可能不会看到错误,因为您使用了WHERE避免出现有问题的值的附加条件。

请记住,视图只是一个命名SELECT语句,因此查询视图不一定是通过首先计算整个视图然后应用条件来完成的。但是,当您创建物化视图时,必须选择视图中的所有数据。