zhaojf1978 发表于 2024-3-14 16:34

Dbeaver除法结果显示为0问题

Dbeaver统计商品的销售率时,明明分子有数字,分母不为零,sql语句两数相乘结果也正常,但是两个数相除,
SELECT ROUND((SELECT COUNT(*)from zhaojf02 z WHERE z."5" like 'P330483%' and z."8" ='已销售')/
(SELECT COUNT(*)from zhaojf02 z WHERE z."5" like 'P330483%' ),4) '销售率'结果直接就显示为0,搞了半天也不行。

暂时解决办法,就是在分子上*1.0,原sql语句修改为SELECT ROUND((SELECT COUNT(*)from zhaojf02 z WHERE z."5" like 'P330483%' and z."8" ='已销售')*1.0/
(SELECT COUNT(*)from zhaojf02 z WHERE z."5" like 'P330483%' ),4) '销售率'

结果就正常了,网上查了大致原因是:使用count的话,最后符合条件的记录数和总记录数结果都是整数,那除数和被除数都是整数,round的结果也会是整数,即0<结果为<1的时候,它就直接返回0,或者各位老师有好的方法也可以分享下。

juqkai 发表于 2024-3-14 17:36

你这SQL我可能会这样写:
SELECT
round(
sum(if(z."8" = '已销售', 1, 0))
/
sum(1)
, 4)
from zhaojf02 z
WHERE z."5" LIKE 'P330483%'


至于变成0,不知道是什么原因了。跟Dbeaver肯定没关系

zhaojf1978 发表于 2024-3-15 09:43

juqkai 发表于 2024-3-14 17:36
你这SQL我可能会这样写:
SELECT
round(


感谢,你的语句简单很多,我按你的思路调整看看
页: [1]
查看完整版本: Dbeaver除法结果显示为0问题