clickhouse:如何避免 DB::Exception:除以零

Posted

技术标签:

【中文标题】clickhouse:如何避免 DB::Exception:除以零【英文标题】:clickhouse:how to avoid DB::Exception: Division by zero in 【发布时间】:2020-11-16 03:09:11 【问题描述】:

当我使用 divide(Decimal v1,Decimal v2) 并且 v2 来自子查询时,如何避免 DB::Exception: 在 clickhouse 中除以零。 我尝试使用 case when v2 = 0 then 0 else 除 end 但没有用!

【问题讨论】:

能否提供您的 sql-query 和 ClickHouse 版本? 【参考方案1】:

条件运算符(if/case/ternary)总是计算所有分支

https://github.com/ClickHouse/ClickHouse/issues/4411#issuecomment-464329721

https://github.com/ClickHouse/ClickHouse/issues/1562

【讨论】:

【参考方案2】:

我使用standard CASE WHEN避免了被零除:

CASE WHEN Quantity > 0 THEN Quantity ELSE 1 END

或 ClickHouse 函数

multiIf(Quantity > 0, Quantity, 1)

【讨论】:

以上是关于clickhouse:如何避免 DB::Exception:除以零的主要内容,如果未能解决你的问题,请参考以下文章

ClickHouse 详解

ClickHouse 表的常用操作

ClickHouse-尚硅谷(11. 高级-查询优化)学习笔记

ClickHouse-尚硅谷(11. 高级-查询优化)学习笔记

ClickHouse-尚硅谷(11. 高级-查询优化)学习笔记

Flink 如何读取和写入 Clickhouse?