吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 149|回复: 2
收起左侧

[求助] Dbeaver除法结果显示为0问题

[复制链接]
zhaojf1978 发表于 2024-3-14 16:34
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我可能会这样写:
[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我可能会这样写:
[mw_shl_code=sql,true]SELECT
round(

感谢,你的语句简单很多,我按你的思路调整看看
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-1 16:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表