2012-05-21 64 views
0

假設我有以下數據。我試圖通過acct_id計算每個buyer_id的數量,其中buyer_id包含5.因此,對於具有五個實​​例幷包含五個實例的acct 51,我需要找到每個buyer_id的計數(當然不包括5)。此計數應通過包含帶有5的buyer_id的所有acct_id,並提供所有其他buyer_id的計數。根據另一列獲取一列的數量

acct_id  buyer_id   message 
51    5   success 
51    13   fail 
51    4   success 
51    6   success 
51    9   fail 
53    6   fail 
53    12   fail 
53    4   success 
57    6   fail 
57    12   fail 
57    4   success 
57    5   success 

因此,在這個例子中,我想最終像下面

buyer_id count(*) 
4   2  
5   2 
6   2 
9   1 
12   1 
13   1 

感謝您的幫助!

+1

爲什麼指望buyer_id = 6是2? – Ruben

+0

是的,我看到你的例子中有些不一致,或者我不明白你想要什麼。 – AaronLS

+0

它是2,因爲當acct_id與buyer_id相關聯時,我只想計算(buyer_id)5. – ATMathew

回答

4

這應該做的伎倆:

select buyer_id, count(distinct acct_id) 
from Table1 a 
where exists (
    select * from Table1 
    where acct_id = a.acct_id 
    and buyer_id =5) 
group by buyer_id 

在這裏看到的sqlfiddle:http://sqlfiddle.com/#!2/0d3d2/3

1

我想這是你想要的。

Select buyer_id, count(*) 
From table 
Where acct_id in (Select acct_id From table Where buyer_id = 5) --insert buyer_id param here 
Group By buyer_id