mysql – 删除Dups然后Sum

我正在使用麻烦的
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 

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

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

然后我想基于标识符SUM“值”.

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

最佳答案 获取每个标识符类别中的Max值

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

> SQLFIDDLE DEMO

点赞