我有一个 mysql 表,其中包含多个分类列(日历日、国家/地区、营销渠道等)和几个数字列,这些数字列代表与该分类列组合相关的指标(即该国家/地区当天收到的新订单数)通过有机搜索等)。
我有时会遇到并且无法理解为什么的问题是,当我聚合该表中的数据时,根据我使用的聚合级别,我会得到不同的结果。
例如一个简单的求和:
select
sum(orders)
from calendar_table;
给出与以下查询不同的结果:
select
DATE_FORMAT(calendar_day, '%Y-%m') as calendar_month,
country,
sum(orders)
from calendar_table
group by calendar_month, country;
通过不同的结果,我的意思是查询 2 中的订单总和高于查询 1 中的订单总和。
mysql数据库运行InnoDB引擎,该表大约有30万行,没有索引(它是一个已经根据生产数据和其他来源构建的分析表)。
这种不匹配的原因可能是什么?
我交叉检查了其中一个源表中的数据,以了解“正确”值应该是什么。我知道第一个查询(没有分组依据,只是一个 sum() 查询)给出了正确的值。但分组查询只是将其分解。
好吧,我自己想出来了。问题出在数据类型上。引发问题的专栏是
float
专栏。
将数据更改为decimal
后问题已解决。