SQL Logi c для расчета количества уникальных членов за 3 месяца каждого месяца. - PullRequest
0 голосов
/ 04 марта 2020

Я работаю над запросом, чтобы подсчитать количество уникальных зарегистрированных членов в таблице для указанных ниже сегментов даты (на основе registration_date_ut c - отметка времени),

1 января-31 марта: Количество Уникальные зарегистрированные участники

Фев с 1 по 30 апреля: Количество уникальных зарегистрированных участников

Март 1-31 мая: Количество Уникальных зарегистрированных участников

Апр 1-Июнь 30: Количество Количество уникальных зарегистрированных членов

1 мая - 31 июля: количество уникальных зарегистрированных пользователей

1 июня - 31 августа: количество уникальных зарегистрированных пользователей

1 июля - 30 сентября: Количество уникальных зарегистрированных пользователей

Авг с 1 по 31 октября: Количество уникальных зарегистрированных пользователей

С 1 сентября по 30 ноября: Количество уникальных зарегистрированных пользователей

Окт 1-De c 31: Количество уникальных зарегистрированных пользователей

Ниже приведен мой запрос Snowflake, который работает, но не возвращает никакого результата,

select
DATE_TRUNC('month',t.registration_date_utc) as "MONTH_START",
count(distinct t.MEMBER_ID)
FROM
(
select
member_id,
registration_date_utc
from  table a
) as t
WHERE TO_DATE(t.registration_date_utc) BETWEEN DATEADD(month,'3',t.registration_date_utc) AND t.registration_date_utc
group by 1
order by 1;

Ответы [ 2 ]

1 голос
/ 04 марта 2020

МЕЖДУ START_DATE и END_DATE Ваше условие для даты всегда будет ложным

select
DATE_TRUNC('month',t.registration_date_utc) as "MONTH_START",
count(distinct t.MEMBER_ID)
FROM
(
select
member_id,
registration_date_utc
from  table a
) as t
--WHERE TO_DATE(t.registration_date_utc) BETWEEN DATEADD(month,'3',t.registration_date_utc) AND t.registration_date_utc
WHERE TO_DATE(t.registration_date_utc) BETWEEN t.registration_date_utc AND DATEADD(month,'3',t.registration_date_utc) 

group by 1
order by 1;
0 голосов
/ 04 марта 2020

Вы хотите считать уникальных посетителей за три месяца. Одним из способов является расширение таблицы для подсчета:

SELECT DATE_TRUNC('month', t.registration_date_utc) + v.offset * INTERVAL '1 month') as MONTH_START,
       COUNT(DISTINCT t.MEMBER_ID)
FROM t CROSS JOIN
     (VALUES (0), (1), (2)) v(offset)
GROUP BY 1
ORDER BY 1;
...