Считайте пользователей каждый месяц, пока выполняется условие - PullRequest
0 голосов
/ 24 мая 2018

Я изо всех сил пытаюсь написать запрос, который может подсчитывать пользователей каждый месяц, основываясь на условии, что два поля даты взаимодействуют.Во-первых, у меня есть поле, которое уникально идентифицирует пользователей, второе поле, в котором регистрируется дата подписки пользователя, и третье поле, в котором регистрируется дата отписки.

user, subscribed, unsubscribed
1234, 2017-01-01, null
2345, 2017-01-01, 2017-12-01
3456, 2017-03-01, 2017-05-20

Таблица, которую я ожидаючтобы увидеть это:

date, user_count
2017-01-01, 2
2017-02-01, 2
2017-03-01, 3
2017-04-01, 3
2017-05-01, 3
2017-06-01, 2
etc...

Я знаю, что я должен включить условие, где подписка должна быть больше, чем отписаться.ГДЕ подписались> отписались.Null просто показывает, что есть пустое значение, где пользователь не отписался.Я просто не уверен, как считать пользователя каждый раз, когда условие выполняется каждый месяц года.Нужно ли мне присоединять мой стол к серии дат-месяцев?

1 Ответ

0 голосов
/ 24 мая 2018

да, вам понадобится ежемесячная серия - посмотрите эту запись

, затем вы можете присоединить свою таблицу к подзапросу, который возвращает отдельные месяцы со следующим условием:

WHERE first_date_of_month BETWEEN date_trunc('month',subscribed) AND date_trunc('month',coalesce(unsubscribed,getdate())

Функция coalesce заменит значения NULL из первого аргумента вторым аргументом (текущая дата)

...