2012-03-30 2 views
1

Я пытаюсь получить количество пользователей, которые заплатили за услугу и зарегистрировались в течение определенного года из mysql db. Член может заплатить за несколько сервисов, так можно пересчитать дважды:Группа Не агрегируя группу по столбцу в SQL

select 
    count(payment_order.memberId) as members, 
    from_unixtime(account_login.memberFrom, '%Y') as memberFrom 
from 
    payment_order 
join 
    account_login 
on 
    payment_order.memberId = account_login.memberId 
Where 
    account_login.memberFrom != '0' 
    and payment_order.`status` = 'paid' 
    and payment_order.dateCompleted >= '2010-01-01 00:00:00' 
    and payment_order.dateCompleted <= '2011-12-31 23:59:59' 
group by memberFrom 

Вместо того, группируя по годам, это, кажется, группировка по индивидуальному кол-членов. Я думаю, что я делаю что-то и может, т видеть лес за деревьями:

1, 2005 
4, 2005 
1, 2005 
1, 2006 
5, 2006 
5, 2006 

Что я ищу является

6, 2005 
11, 2006 

признательна за любые указатели, которые могут объяснить мой оглупления

ответ

6

Вы группируете account_login.memberFrom, который создает каждую отдельную строку.

Затем вы выбираете from_unixtime(account_login.memberFrom, '%Y') на каждой из этих строк, создавая повторяющиеся значения.

Вместо этого используйте GROUP BY from_unixtime(account_login.memberFrom, '%Y')

+0

идеальный ответ, ясно объяснил - Примет, как только это позволяет мне. большое спасибо –