2016-03-25 20 views
1

私は、1つの論理に対して頼りにしていません。mysqlで顧客数を月単位で繰り返す

しかし、私の要件は、私が

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 

出力この

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


FEB  2    3    7 
ようにしたい

枚このデータから(、NewCustomers repeatCustomers)顧客のカウント以前と現在の月に基づいて欲しいです

次は同じ月になります

いずれかの候補n?ありがとう!!

答えて

0

私は参照の月が何であるか分からないが、あなたは、各月に訪問者を顧客参照最初時間組み合わせることにより、最初の2つの列を取得することができます:年

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

ようにだから、1月にはリピート顧客は皆新しいものになるだろう、FEBではジャブ客が二人とも来るのであろう。その場合、janはリピート顧客を探すためのRef Monthです。 – Kate

関連する問題