根据另一列获取一列的计数

时间:2012-05-21 20:19:28

标签: mysql sql

假设我有以下数据。我正在通过acct_id尝试每个buyer_id的数量,其中buyer_id包含5.因此对于具有五个实​​例并且包含一个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

感谢您的帮助!

2 个答案:

答案 0 :(得分: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 :(得分: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