I have table Order
looks like this:
order_number order_created_date order_completed_date order_delivered_date customer_id order_info gmv R074828364 8/2/2020 9:53 8/2/2020 10:09 8/2/2020 13:06 1467218 first 126.62 R195440232 20/6/2020 11:56 20/6/2020 12:11 20/6/2020 12:33 2105932 first 69.08 R204790956 20/6/2020 12:45 28/6/2020 9:34 28/6/2020 10:58 2105934 repeat 93.53 R097755601 2/2/2020 7:29 10/2/2020 19:12 11/2/2020 10:53 1183397 repeat 74.26 R862404004 20/6/2020 12:34 15/7/2020 7:42 15/7/2020 9:01 2105934 repeat 114.53
I would like to count the number of repeated customer and new customer with the sales amount for every month of the year. If possible, a table looks like this:
MTD Repeat_cust (count) Repeat_cust ($) New_cust (count) New_cust ($) Total_cust Jan Feb Mar Apr May
I have tried but I still unable to calculate the sales of each repeated customer and new customer. Plus with the code that I use below, I didn’t get the correct count for each repeated customer and new customer for each month. Is there a sophiscated way to do so?
SELECT extract (year from order_completed_date) as SalesYear, extract (month from order_completed_date) as SalesMonth, count(order_info = 'repeat') as Repeat_cust, count(order_info = 'first') as New_cust, count(customer_id) as TotalCust ,SUM(GMV) AS TotalSales FROM order where order_completed_date >= '2020-01-01 00:00:00' GROUP BY salesyear, salesmonth ORDER BY salesyear, salesmonth
which give me this output:
SalesYear SalesMonth Repeat_cust New_cust Total_cust Total sales 2020 1 25342 25342 25342 3867478.38 2020 2 24544 24544 24544 3701199.176 2020 3 22120 22120 22120 3266824.03 2020 4 20589 20589 20590 3035031.011 2020 5 24183 24183 24184 3662249.952 2020 6 23176 23176 23177 3619393.899 2020 7 20164 20164 20164 3467183.72 2020 8 18024 18024 18024 3131129.843 2020 9 18441 18441 18441 3354984.953
Advertisement
Answer
Try this below script-
SELECT extract (year from order_completed_date) as SalesYear, extract (month from order_completed_date) as SalesMonth, count(case when order_info = 'repeat' then 1 end) as Repeat_cust, count(case when order_info = 'first' then 1 end) as New_cust, count(customer_id) as TotalCust , SUM(case when order_info = 'repeat' then GMV end) as repeat_Sales, SUM(case when order_info = 'first' then GMV end) as new_Sales, SUM(GMV) AS TotalSales FROM order where order_completed_date >= '2020-01-01 00:00:00' GROUP BY salesyear, salesmonth ORDER BY salesyear, salesmonth