让决策更智能
新一代智能数据分析平台

GP数据库数值相除为0的解决方法

观小数发表于:2021年12月13日 19:51:06更新于:2022年04月28日 11:31:42

问题描述:

如下图,云南订单占比=云南订单数/总订单数据,正常情况下,占比=348/4987=6.98%,但是这里却显示为0.00%:

00161b72fcb2cec379a40219594c1c2

其中,“云南订单数”的计算公式为:count(distinct(case when [shipping_area] = '云南' then [order_id] end))

00161b73142510a5c7641ed00a876fc

总订单数的公式为:count(distinct([order_id]))

00161b731ab09c68bc3db1b0944321e

云南订单占比为两者相除:

00161b731e81c8585c41e2ea06c03ad

产生原因:

这个是GP(Greenplum)数据库的特性,两个整数相除,小数点会直接约掉,比如等于0点几,都会变成0。

解决方案:

需要把其中一个字段转换成float格式:cast(count(distinct([order_id])) as float)

00161b7330a87a499babc185d6f499e


此时,占比显示正常:

00161b7335224fd2ab307d755ff7dd2

    您需要登录后才可以回复