2016-08-04 157 views
1

我必须从列2中获得值的总和,但我应该只计算一次每个ID的值。 例如,对于下面我所需要的表5 + 10 + 7,而不是5 + 5 + 10 + 7Postgres总和值为每个唯一ID

id column1 column2 
1 value1 5 
1 value1 5 
2 value1 10 
3 value1 7 

后者通过我下面的查询得到,但我不知道如何使其适应得到第一笔款项。我应该如何选择所有不同的行来预先筛选表格?

SELECT column1, sum(column2) FROM table group by column1; 
+2

'总和(不同的列2)' –

+0

如果您需要总和的id,你应该ID组。 –

+0

但是如果你对给定的'id'有多个不同的'column2'值会发生什么?你应该总结哪一个?在你的例子中,它很容易,因为它们都具有“5”的值。但如果它们不同呢? – sstan

回答

1

您应该考虑清理您的数据以删除重复的行。但是,下面的查询应id, column1得到你想要的结果通过第一组,以便移除重复:

select column1, sum(column2) 
    from (select id, column1, min(column2) as column2 
      from tbl 
     group by id, column1) t 
group by column1 
+0

min(column2)在子查询中的意义是什么?即使没有min()它不会做同样的事情? – user4658312