0

過去 1 年間、MTD Unique ユーザー数を毎日取得する必要があります。元。私のデータが好きなら

dt  customername
1   a
1   b
2   a
2   c
3   b
3   a
4   c
4   d
4   e

予想される出力 - 最初に 2 人の一意のユーザーのみ。2nd (1&2nd) 3 ユーザー。3rd (1st から 3rd) 3 人のユーザー。4 日 (1 日から 4 日) 5 人のユーザー。過去1年間の各日付の毎月にこれが必要です

dt uniquecustcount
1  2
2  3
3  3
4  5

私のデータは以下の形式ですが、コア ロジックは MTD の場合よりも上です。助けてください

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
;
4

1 に答える 1