为什么Redshift给我除以零的误差?

查克·佩德罗(Chuck Pedro)

我知道Redshift中的浮点周围有一些陷阱,但我无法克服。

我有col1和col2列,并想创建一个简单的除法为“ calc”。col1和col2有时为零,因此我在col2> 0的地方使用。col1和col2没有空值。这很好用:

select col1*1.0/col2 as calc
from t1
where col1 > 0 and col2 > 0

但是,如果我在where子句中为calc使用任何值,则会收到错误消息:

select calc from 
(select col1*1.0/col2 as calc
from t1
where col1 > 0 and col2 > 0) 
where calc < 1 -- error here for any value, gt or lt

SQL Error [500310] [57014]: [Amazon](500310) Invalid operation: Divide by zero;

我尝试了很多事情,包括calc的不同值,转换为十进制或浮点数,但是却遇到了相同的错误。为什么?

专线小巴

Redshift可能以一种导致select子句中的除法在子句中的条件之前被求值的方式优化查询的操作树where

您可以使用以下方法解决此问题nullif()

select calc 
from (
    select col1 * 1.0 / nullif(col2, 0) as calc
    from t1
    where col1 > 0 and col2 > 0
) 
where calc < 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么这给我除以零错误

来自分类Dev

为什么我的预测误差为零?

来自分类Dev

除以零误差

来自分类Dev

除以零误差

来自分类Dev

SSRS 除以零误差

来自分类Dev

为什么不对我的UnhandledExceptionFilter进行简单的除以零的调用?

来自分类Dev

脾气除以零。为什么?

来自分类Dev

为什么此ML模型给我零精度?

来自分类Dev

为什么len(file.read())给我零值?

来自分类Dev

计算序列除以零误差

来自分类Dev

SSRS 2012 除以零误差

来自分类Dev

为什么给我NaN

来自分类Dev

Coq QArith除以零就是零,为什么?

来自分类Dev

为什么String.format()不给我左零填充的浮点输出?

来自分类Dev

为什么Textarea.Innertext给我零点异常?

来自分类Dev

为什么 scanf 总是给我第一个输入零?

来自分类Dev

SSRS表达式除以零误差

来自分类Dev

INSERT触发评级系统:除以零误差

来自分类Dev

为什么我得到范围误差的索引?

来自分类Dev

Numpy在什么情况下会返回“除以零误差”?

来自分类Dev

Numpy在什么情况下会返回“除以零误差”?

来自分类Dev

为什么我对PostgreSQL v13除以零?我想应该将行过滤掉

来自分类Dev

为什么我必须除以Z?

来自分类Dev

当我们尝试将变量除以零时,为什么编译器没有显示错误

来自分类Dev

为什么 int i = 10; 我 / 0; 编译,但 5 / 0 给出 CS0020 - 除以常数零?

来自分类Dev

为什么withWeekOfWeekyear给我不同的补偿?

来自分类Dev

为什么Nokogiri给我多个结果?

来自分类Dev

为什么BeautifulSoup给我错误的文字?

来自分类Dev

为什么这会给我InvalidArgumentError?