2016-04-10 44 views
3

如果我們有一個表的值爲a和b,有沒有辦法只加起來的b,如果它不是重複的a?例如跟蹤已經加法的元組sql

a b 
1 2 
2 3 
2 3 

所以我們會得到(而不是8)只有5

A排序

select sum(b if unique a), 
from table 
where ... 
+0

應在'的情況進行ADDE什麼值= 2'和第一個'B = 3'和第二'B = 5'? 「a」是否等於「2 + 3」或「2 + 5」? –

回答

2

以下查詢的每個組a

選擇的 b的最低值
select min(b) min_b 
from mytable 
group by a 

然後,您可以通過選擇從派生表

select sum(min_b) from (
    select min(b) min_b 
    from mytable 
    group by a 
) t 

http://sqlfiddle.com/#!9/d82c5/1

1

您還沒有指定您的RDBMS,但如果您使用的支持SQL Server等窗口功能的數據庫,你可以通過使用WITH條款和ROW_NUMBER()首先查詢中的唯一行功能,然後得到SUM

;WITH C AS(
    SELECT a, b, 
     ROW_NUMBER() OVER (PARTITION BY a ORDER BY a) AS Rn 
    FROM Table1 
) 
SELECT SUM(b) FROM C 
WHERE Rn = 1 

SQL Fiddle