为什么sum不计算期望值?

时间:2018-09-01 03:39:27

标签: mysql sql

有人可以解释为什么这些导致不同的结果吗?

select distinct sku, product_title, sales_month
from ims_sales_data_history
where product_title = 'BERRY STRAWBERRY CV' 
and sales_month > 0
and department = 'Produce'
group by 1,2,3

满足以下条件。总和是159,这是正确的。

0000000033565   BERRY STRAWBERRY CV 11
0000000033565   BERRY STRAWBERRY CV 10
0000000033565   BERRY STRAWBERRY CV 56
0000000033565   BERRY STRAWBERRY CV 4
0000000033565   BERRY STRAWBERRY CV 15
0000000033565   BERRY STRAWBERRY CV 5
0000000033565   BERRY STRAWBERRY CV 25
0000000033565   BERRY STRAWBERRY CV 27
0000000033565   BERRY STRAWBERRY CV 6

下面的查询具有唯一的名称,这是我想要的,但总和不正确。

SELECT product_title, SUM(sales_month)
FROM ims_sales_data_history
where department = 'Produce'
AND sales_month > 0
group by 1

以此为准:194(最后一行)之和

BERRY STRAWBERRY 16OZ CV    2584526
BERRY STRAWBERRY 32OZ OG    603817
BERRY STRAWBERRY 32OZ CV    465426
FC BERRY STRAWBERRY OG  74961
BERRY STRAWBERRY BULK BY LB CV  4371
BERRY STRAWBERRY 64OZ CV    780
BERRY STRAWBERRY CV 194

所需的输出是唯一的名称和正确的总和(159)。我在做什么错了?

1 个答案:

答案 0 :(得分:0)

由于您的数据重复,因此导致不同的结果。

想象一下您的数据如下:

sku             product_title       sales_month
0000000033565   BERRY STRAWBERRY CV 11
0000000033565   BERRY STRAWBERRY CV 11
0000000033565   BERRY STRAWBERRY CV 11

第一个查询将返回:

0000000033565   BERRY STRAWBERRY CV 11

这似乎是您想要的。

第二个将返回:

BERRY STRAWBERRY CV 33

我建议您修复数据源。数据中的重复项可能不正确。