MySQL 分组,根据聚合级别给出不同的总结果

问题描述 投票:0回答:1

我有一个 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() 查询)给出了正确的值。但分组查询只是将其分解。

mysql
1个回答
0
投票

好吧,我自己想出来了。问题出在数据类型上。引发问题的专栏是

float
专栏。 将数据更改为
decimal
后问题已解决。

© www.soinside.com 2019 - 2024. All rights reserved.