PostgreSQL整数除法返回0问题:原因分析与解决方法
整数除法导致百分比计算结果为0的问题与解决方法
问题场景
在Metabase中需计算do_qty占target_lembar的百分比,最初使用的SQL查询语句如下:
select distributor_id , target_lembar , do_qty , do_qty::integer / target_lembar::integer do_qty_divide_target_lembar_percentage from raw where target_lembar>0
执行后发现do_qty_divide_target_lembar_percentage字段返回结果均为0,例如第一行distributor_id=155的预期结果应为28.16%,但实际得到0值。
问题原因
这是数据库整数除法的特性导致的:当两个整数类型的数值相除时,数据库会直接舍弃结果的小数部分,仅返回整数商。如果do_qty的数值小于target_lembar,相除后的小数部分会被截断,最终结果就会变成0。
解决方法
将参与除法运算的两个字段转换为浮点数类型后再进行计算,修改后的查询语句如下:
select distributor_id , target_lembar , do_qty , do_qty::float / target_lembar::float do_qty_divide_target_lembar_percentage from raw where target_lembar>0
内容的提问来源于stack exchange,提问作者Cignitor
相关产品推荐
相关产品推荐

