Click House 使用踩坑

问题:Decimal result’s scale is less than argument’s one. (ARGUMENT_OUT_OF_BOUND)

出错的SQL:

SELECT
		a.column1,
		a.column2 / a.column3 -- 这句报错了
FROM
		a

查看a表的DDL:

CREATE TABLE a
(
    `date` DateTime DEFAULT toDateTime(now())
    
    `column1` String DEFAULT '' ,

    `column2` Decimal(18, 2) DEFAULT 0 ,

    `column3` Decimal(18, 5) DEFAULT 0 
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(date)
ORDER BY (column1)
SETTINGS index_granularity = 8192;

报错原因:

  • 由于column2的精度小于,column3的精度,导致语句报错

涉及知识点:

  • click house中两个Decimal(P,S)类型的数据的四则运算设计的规模计算,如下:
    • 加:max(S1,S2)
    • 减:max(S1,S2)
    • 乘:S1+S2
    • 除:被除数[Decimal(P1,S1)] / 除数[Decimal(P2,S2)],其中S1≥S2

解决办法

  • 更改数据表中的规模大小:
ALTER TABLE a MODIFY COLUMN column1 Decimal(18,5);
  • 利用CAST或者toDecimal()语句对想要修改的列进行规模修正;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值