2012-03-30 9 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 

よりもむしろ年によってグループ化、それは個々のメンバーの数によってグループ化しているようです。私は、私が何かをやっているとすることができると思う; tはツリーの木を参照してください。私のbefuddlementを説明するかもしれない任意のポインタのため

6, 2005 
11, 2006 

感謝を

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

私は何を探していることですが

答えて

6

グループ化はaccount_login.memberFromで行い、個々の行を作成します。

次に、これらの各行でfrom_unixtime(account_login.memberFrom, '%Y')を選択して、重複した値を作成します。代わりに

GROUP BY from_unixtime(account_login.memberFrom, '%Y')

+0

完璧な答えを使用し、明確に説明 - とすぐに、それは私をすることができますとして受け入れるだろう。どうもありがとう –

関連する問題