最近在读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

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

被折叠的 条评论
为什么被折叠?



