Clickhouse除数为0

这篇博客探讨了Clickhouse在处理除法运算时与Java和JavaScript的不同。当除数为0时,Clickhouse返回Infinite,而被除数为0则返回NaN。在SQL中处理占比时,可以通过isInfinite函数和if条件来避免除以0的情况。此外,还提到了一个小技巧,即在分母上加小数以防止除0错误,但可能引入误差。

最近在读Clickhouse的官方文档,顺便记录下.

Divide by zero
在编程语言中遇到除数为0的情况有的抛出异常,比如在Java中:

> java.lang.ArithmeticException: / by zero  

也有的会返回Infinity(无穷大),比如在JavaScript中:

> 1/0
Infinity

在Clickhouse中如果除数为0会返回Infinite,被除数为0时会返回NaN

edee83c425b9 :) select 1/0

SELECT 1 / 0

┌─divide(1, 0)─┐
│          inf │
└──────────────┘

1 rows in set. Elapsed: 0.320 sec. 

edee83c425b9 :) select 0/0

SELECT 0 / 0

┌─divide(0, 0)─┐
│          nan │
└──────────────┘

1 rows in set. Elapsed: 0.003 sec. 

edee83c425b9 :) select 0/1

SELECT 0 / 1

┌─divide(0, 1)─┐
│            0 │
└──────────────┘

1 rows in se

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CoderFusionZhu

不要打赏太多哦!我喝速溶就行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值