snowflake 에서 invalid identifier가 자꾸 떠서 문의드립니다.. 0 3 1,189

by BEN [SQL Query] snowflake query sql [2021.03.16 14:40:53]



WITH cte0 AS
     (SELECT A.USER_PSEUDO_ID, B.USER_PSEUDO_ID FROM DW.USER.D_GA_USER A 
      LEFT JOIN DW.BEHAVE.F_GA_SESSION_SUMMARIES B ON A."USER_PSEUDO_ID" = B."USER_PSEUDO_ID"),
     cte1 AS
     (SELECT E.USER_PSEUDO_ID, D.USER_PSEUDO_ID FROM DW.USER.D_GA_USER D
      LEFT JOIN DW.BEHAVE.F_GA_SESSION_SUMMARIES E ON D."USER_PSEUDO_ID" = E."USER_PSEUDO_ID" AND  D.CREATED_DATE = E.EVENT_DATE - INTERVAL '1 day')
 
SELECT E.EVENT_DATE, count (DISTINCT E.EVENT_DATE)/count (DISTINCT A.CREATED_DATE) * 100 AS D1_retention_rate 
FROM cte0
JOIN cte1 ON E.USER_PSEUDO_ID = A.USER_PSEUDO_ID
GROUP BY B.EVENT_DATE 
ORDER BY B.EVENT_DATE DESC LIMIT 20;

 

안녕하세요 초보라 아직 배울게 많습니다.

snowflake 에서 d1 리텐션 구하려고 이것저것 시도중인데

마지막 문단  join 부분에서 invalid identifier 'E.USER_PSEUDO_ID' 에러가 떠서 도저히 모르겠습니다...

by 동동동 [2021.03.16 14:47:37]

예명을 주셔야 할것 같습니다..

WITH cte0 AS

     (SELECT A.USER_PSEUDO_ID AS A_ID, B.USER_PSEUDO_ID AS B_ID FROM DW.USER.D_GA_USER A

      LEFT JOIN DW.BEHAVE.F_GA_SESSION_SUMMARIES B ON A."USER_PSEUDO_ID" = B."USER_PSEUDO_ID"),

     cte1 AS

     (SELECT E.USER_PSEUDO_ID AS E_ID, D.USER_PSEUDO_ID AS D_ID FROM DW.USER.D_GA_USER D

      LEFT JOIN DW.BEHAVE.F_GA_SESSION_SUMMARIES E ON D."USER_PSEUDO_ID" = E."USER_PSEUDO_ID" AND  D.CREATED_DATE = E.EVENT_DATE - INTERVAL '1 day')


by 마농 [2021.03.17 08:16:55]

문법적으로도 틀린 부분이 많지만
논리적으로도 많이 이상하게 작성되어 있습니다.
문법 오류를 잡을 상황이 아닌 듯 합니다.
잘못 작성된 쿼리로 질문하시기 보다는
원본 대비 결과표로 형태로 원하는 바를 설명해 주시는게 좋을 듯 하네요.
구하고자하는 D1_retention 이 의미하는 바를 설명해 주세요.


by BEN [2021.03.17 16:28:54]

해결했습니다 말씀 주신데로 다시 읽어보니 이상하긴 하더라구요 

암튼 감사드립니다 ㅋㅋㅋㅋ

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입