sql - 红移四舍五入问题
问题描述
我有一个表,其中有一个 numeric(23,2) 字段,我需要将其除以一个常数。
我的基线是这个聚合
select site, sum(sales) / 1.07 as sales from sales group by site;
但是当我添加另一列然后比较所有列的总和时,我注意到一些小数下降
select site, product, sum(sales) / 1.07 as sales from sales group by site, product;
在 Redshift 中是否有合适的方法来处理这种情况?
解决方案
我建议在求和之前先除法:
select site, product, sum(sales / 1.07) as sales
from sales
group by site, product;
从数学上讲,这应该是等价的。但是,由于数字在计算机中不是无限精确的,这可能会解决您的问题。
推荐阅读
- ios - 首先滑动/向下滚动将消失视图
- android - 使用 facebook AdView 查找呈现的横幅的 WebView - 通过反射
- angular - Internet Explorer 正在删除我的 Angular 应用程序的上下文根?有什么办法可以避免?
- asp.net-core - 如何在 ASP Net Core 2.0 MVC Web 应用程序和 Azure AD 之间强制重新身份验证
- json - 无法快速获得字符串响应
- c# - 优化条件的方法?
- c# - 在 Asp.net C# 中将带有 (bootstrap-4)css 的 HTML 转换为 PDF Itextsharp
- maven - Maven Jacoco - 在 1 个概览中合并所有测试结果
- sql - 如何检查插入触发器(如更新触发器)上的列值
- open-source - 考虑 Tyk API Gateway - 开源版本