如何解决SQL 计算限制为 6 位小数
我正在尝试使用分区来计算总数的百分比,并且需要计算结果超过 6 位小数。我有数百万条记录,因此我需要将计算扩展到小数点后 6 位以求和为总数的 100%。
我尝试将结果转换为 18 位小数,但我仍然得到小数点后第 6 位以外的所有零。
任何帮助将不胜感激!
=ArrayFormula(if(len(A2:A),countifs(A2:A,"<>",row(A2:A),"<="&row(A2:A)),))
[结果截图]
更新:感谢您的回复!我尝试将所有内容都转换为十进制(分子、分母和结果),但仍然在小数点后第 6 位全为零。也许问题出在 Partition by 上?
SELECT
ISNULL(SUM(c.PaidOriginal),0) / SUM(NULLIF(SUM(c.PaidOriginal),0) ) OVER (PARTITION BY c.calyr) AS percentoftotal,CAST(ISNULL(SUM(c.PaidOriginal),0) ) OVER (PARTITION BY c.calyr) AS DECIMAL(38,18)) AS percentoftotal
FROM c
解决方法
在除法之前将第一个或第二个数字转换为您想要的精度:
SELECT
ISNULL(SUM(c.PaidOriginal),0) / SUM(NULLIF(SUM(c.PaidOriginal),0) ) OVER (PARTITION BY c.calyr) AS percentoftotal,CAST(ISNULL(SUM(c.PaidOriginal),0) AS DECIMAL(38,18)) / SUM(NULLIF(SUM(c.PaidOriginal),0) ) OVER (PARTITION BY c.calyr) AS percentoftotal
FROM c
dbfiddle here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。