2016-08-04 80 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