2016-03-25 17 views
1

Ich suche nach einer Logik, die nicht akzeptabel sein könnte.wiederholen Kunden zählen Monat weise in Mysql

Aber meine Forderung, die ich von Kunden zählen möchten (Neukunden, repeatCustomers) auf der Grundlage der bisherigen und aktuellen Monat

Wie aus diesen Daten Ich möchte

DATE  NAME 
2016-01-01 A 
2016-01-01 B 
2016-01-01 C 
2016-01-05 E 
2016-01-05 F 
2016-01-25 G 
2016-01-25 H 
2016-02-25 A 
2016-02-25 E 
2016-02-10 X 
2016-02-11 Y 
2016-02-13 F 

Ausgabe wie diese

MONTH NewCustomer  RepeatCustomer CustomerCount of refernece month (Like here is JAN) 


FEB  2    3    7 

Das gleiche wird für die nächsten Monate gehen

Alle suggestio n? Vielen Dank !!

Antwort

0

Ich weiß nicht, was der Referenzmonat ist, aber Sie können die ersten beiden Spalten erhalten, indem die ersten Zeit Kombinieren Sie einen Kunden mit, wer in jedem Monat besucht:

select date_format(c.date, '%Y-%m') as yyyymm, 
     count(distinct c.name) as NumCustomers, 
     sum(case when date_format(c.date, '%Y-%m') <> date_format(cc.start_date, '%Y-%m') 
       then 1 else 0 
      end) as NumRepeatCustomers 
from customers c join 
    (select c.name, min(c.date) as start_date 
     from customers c 
     group by c.name 
    ) cc 
    on c.name = cc.name 
group by date_format(c.date, '%Y-%m') 
order by yyyymm; 
+0

Wie, wenn Jahr Startet, also im Januar gäbe es keine Wiederholungskunden mehr, alle werden neu sein, in FEB könnte es sein, wenn jan Kunden auch in feb kommen. In diesem Fall ist Jan mein Ref-Monat, um Stammkunden zu finden. – Kate