Mysql 按列分组的查询,而不是按DISTINCT

Mysql 按列分组的查询,而不是按DISTINCT,mysql,Mysql,我将两列中的不同值相加,但我需要按单独的列对数据进行分组。下面是我的MySQL表结构的一个示例: customer category amount1 amount2 1 food 100 200 1 drink 100 200 1 home 200 100 以下是我当前的查询: SELECT SUM(DISTINCT amount1)

我将两列中的不同值相加,但我需要按单独的列对数据进行分组。下面是我的MySQL表结构的一个示例:

   customer category    amount1    amount2
     1      food        100        200
     1      drink       100        200
     1      home        200        100
以下是我当前的查询:

SELECT SUM(DISTINCT amount1) AS total1, SUM(DISTINCT amount2) AS total2 
FROM groceries GROUP BY customer.
问题如下:如果分组是按客户进行的,则客户1的total1=300,但如果分组是按类别进行的,则total1=400

我有一个应用程序,它从一个高级客户视图开始,按客户分组,然后深入到类别级别,正如我所描述的,这两个数字不匹配


“我的类别”视图与数据匹配,但“我的客户总数”处于禁用状态;如何更改上面的查询以正确地匹配和反映数据,并且仍然按客户分组?

删除
不同的
,并且查询的总和将保持一致。根据我的经验,
sum(distinct)
avg(distinct)
应该是不必要的。问题是客户机的表中有大量重复数据,规范化的唯一方法是使用DISTINCT。如果我不这样做,那么总和将加上所有的重复项目,然后客户端只指定使用每个重复的一个。如果客户机指定只使用每个副本中的一个,那么您所做的是正确的,而他们的逻辑是错误的。如果他们想要正确的答案,他们需要有人帮助他们找出正确的逻辑。这很好:)我想回到他们那里,提出一个建议,我建议他们在表格中添加什么来完成他们想要的,只要视图知道重复项不会被删除,但他们可以添加一列,等等。我不知道。你的问题不清楚什么是正确的价值观。我怀疑存在某种层次结构或维度模式,这些值应该存储在另一个表中。