2012-05-21 3 views
0

Предположим, у меня есть следующие данные. Я пытаюсь подсчитать количество each buyer_id acct_id, где buyer_id содержит 5. Итак, для acct 51, который имеет пять экземпляров и содержит один с 5, я должен был найти счет каждого покупателя_ид (за исключением, конечно, 5). Этот счет должен пройти через все acct_id, которые содержат buyer_id с 5, и предоставить счет всех других buy_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, потому что я хочу только считать (buyer_id), когда acct_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 
Смежные вопросы