删除Dups然后Sum

时间:2016-03-26 06:03:46

标签: mysql sql

我正在使用麻烦的MySQL数据表。我有一组记录,但是,记录是重复的。我需要适当地总结不同的价值观。这是情况......

鉴于数据

   identifier    category    value
       1           a          40
       1           a          20
       1           b          80
       1           c          40
       1           a          80
       2           a          20
       2           b          40

我想提出的是以下

   identifier    category
       1            200
       2            60 

在这种情况下,我想在“value”字段上使用MAX消除由标识符+类别的复合键定义的重复项。这让我有以下几点:

   identifier    category    value
       1           a          80
       1           b          80
       1           c          40
       2           a          20
       2           b          40

然后我想根据标识符来“SUM”。

这是我知道我需要什么的另一个例子,但是,我不确定如何在单个SQL语句中执行此操作。我可以使用临时表,然后对其运行聚合(SUM)查询。但是,我想尝试用一个声明来解决这个问题。

1 个答案:

答案 0 :(得分:2)

要在每个Max

中获得identifier + category
select identifier,category,max(value)
from table1 
group by identifier,category;

要让SUM在上面的结果

之上进行聚合
select identifier,sum(value) as value
from 
(
select identifier,category,max(value) as value
from table1 
group by identifier,category
) a
group by identifier