Рассчитать сумму подписки новых пользователей MySQL

0

У меня есть набор данных, где мне нужно узнать о доходах новых подписчиков.

Это подписчики, которые платят либо еженедельно, либо ежемесячно в зависимости от подписки, в которой они находятся.

Уникальный идентификатор - "клиент", а данные находятся на отметке времени, но я хочу, чтобы он свернул на месячном уровне.

Теперь за каждый месяц нам нужно узнать доход только для новостных подписчиков. В принципе, представьте, что клиенты участвуют в ежемесячных/еженедельных подписках, и мы хотим, чтобы их ПЕРВЫЕ платежи были засчитаны здесь.

Здесь образец данных и

created            customer                  amount
16-Feb-18 14:03:55  cus_BwcisIF1YR1UlD  33300
16-Feb-18 14:28:13  cus_BpLsCvjuubYZAe  156250
15-Feb-18 19:19:14  cus_C3vT6uVBqJC1wz  50000
14-Feb-18 23:00:24  cus_BME5vNeXAeZSN2  162375
9-Feb-18 14:27:26   cus_BpLsCvjuubYZAe  156250

....и так далее...

вот окончательный желаемый результат

yearmonth new_amount
Jan - 2018   100000
Feb - 2018   2000
Dec - 2017   100002

Это необходимо сделать в интерфейсе MySQL.

Теги:
partition

2 ответа

0
   We can have sql subquery for only the 1st payment of the new customer with   
   amount for every month and year

   The query is as follows

  SELECT month(created) as mm,year(created) as yyyy,
  sum(amount) as new_amount
  FROM t
  WHERE t.created=(select min(t2.created) from t t2 where 
    t2.customer=t.customer) 
  • 0
    Это большое спасибо! Но проблема в том, что он выбирает только минимальную дату создания за каждый месяц - так много клиентов не учтено. Я хочу выбрать минимальную дату создания для каждого клиента - учитывая обе переменные, есть идеи, как это сделать?
0

В основном, вы хотите отфильтровать данные для первого клиента. Один из способов сделать это включает коррелированный подзапрос.

Остальное просто агрегируется по годам и месяцам. Таким образом, общий запрос не так уж сложный, но он состоит из двух отдельных частей:

select year(created) as yyyy, month(created) as mm,
       count(*) as num_news,
       sum(amount) as amount_news
from t
where t.created = (select min(t2.created)
                   from t t2
                   where t2.customer = t.customer
                  )
group by yyyy, mm
  • 0
    Это большое спасибо! Но проблема в том, что он выбирает только минимальную дату создания за каждый месяц - так много клиентов не учтено. Я хочу выбрать минимальную дату создания для каждого клиента - учитывая обе переменные, есть идеи, как это сделать?
  • 0
    @PravinSingh. , , Я не знаю, какой запрос вы выполняете, но этот запрос выбирает минимальную дату создания для каждого клиента.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню