Мне нужно, чтобы MTD Уникальные пользователи подсчитывали каждый день в течение последнего 1 года. Ex. если мои данные похожи на
dt customername
1 a
1 b
2 a
2 c
3 b
3 a
4 c
4 d
4 e
ожидаемый вывод - только 1-го уникального пользователя. на 2-х (1 и 2) 3 пользователей. на 3 (с 1 по 3) 3 пользователя. 4 (с 1 по 4) 5 пользователей. Мне нужно это для каждого месяца для каждой даты за последний 1 год
dt uniquecustcount
1 2
2 3
3 3
4 5
мои данные представлены в формате ниже, но логика ядра ядра c выше единицы для МПД. Оцените любую помощь, пожалуйста
CREATE MULTISET TABLE GK_DAILY_USERS ,NO FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT,
DEFAULT MERGEBLOCKRATIO
(
EVENT_DATE DATE FORMAT 'yyyy-mm-dd',
Subs_Id INTEGER,
PAYMENT_METHOD_CD VARCHAR(8) CHARACTER SET UNICODE NOT CASESPECIFIC,
Data_User_Flag VARCHAR(1) CHARACTER SET UNICODE NOT CASESPECIFIC,
BUS_UNIT VARCHAR(20) CHARACTER SET LATIN NOT CASESPECIFIC,
Event_Count INTEGER)
PRIMARY INDEX ( EVENT_DATE ,Subs_Id );
Insert into GK_DAILY_USERS values (?,?,?,?,?,?);
Я пытаюсь ниже sql. Я знаю, что sql не имеет смысла и, следовательно, ищет решение.
SELECT EVENT_DATE, MAX(R2) FROM (
SELECT EVENT_DATE
,COUNT(A.SUBS_ID)OVER(ORDER BY ROWNUM,A.SUBS_ID) AS R2
FROM (
SELECT A.EVENT_DATE,A.SUBS_ID
,Row_Number() Over (Order by EVENT_DATE, SUBS_ID) rownum
,COUNT(A.SUBS_ID)OVER(PARTITION BY A.SUBS_ID ORDER BY A.EVENT_DATE) AS RUN_TOTAL3
FROM GK_DAILY_USERS A
WHERE Data_User_Flag='Y'
AND subs_id in (566875703,289813839, 151153086,279262050,18378517)
ORDER BY EVENT_DATE, SUBS_ID
) A
WHERE RUN_TOTAL3 = 1
) A GROUP BY EVENT_DATE ORDER BY 1
;