고객은 대출 상품 시작부터 대출 신청 종료까지 완료해야 합니다. 각 단계별 중단 고객들을 찾는 것이 이 분석의 목적입니다.

문제는 1 ~ 25단계까지 개별 단계 중 일부는 단계별로 나오지 않고 여러번 반복된다는 점을 찾아냈습니다.

 

1. 특정 단계의 경우, 공통 모듈이므로 여러번 나오게 됩니다.

 

2. 해당 상품 코드가 제대로 잡히지 않으므로 공통 모듈이 나오는 PAGE_ID가 해당 상품 단계에서 지나친 것인지 아니면, 다른 상품 단계에서 사용된 것인지 알 수가 없습니다. 예를 들어서 KYC/스크랩핑 모듈의 경우 여러 차례 나오게 되므로 어떤 고객은 1단계에서, 

문제는 고객이 1단계를 지나서 바로 14단계까지 나온다는 문제점이 있습니다. 개별 고객의 가장 큰 단계를 가져다 중단 고객의 중단 단계로 정할 경우, 위와 같은 문제점이 발생한다는 것을 발견했습니다.

 

3. 이번에 분석을 하면서, 중간 단계에서 데이터를 보정하는 방법을 분석할 때 사용했습니다.

 

4. 데이터 보정의 경우, 제대로 분석 이뤄지지 않는다는 제약이 있다는 생각을 했습니다.

 

 그래서 제 생각은 이렇게 분석을 하는 것보다는 실제 고객의 PAGE_ID 데이터를 필터링하는 것을 제외하고자 합니다. 클린징된 PAGE_ID 사용하는 것을 과감히 포기하고자 합니다. 이유는 우리가 맞다고 생각했던 PAGE_ID가 실제로 고객이 지나치는 것이 아니라는 것을 발견했기 때문입니다. 이런 이유로 퍼널 분석이 아닌, 단계별 PAGE_VIEW를 볼때에는 PAGE_ID를 사용하기 때문입니다. 우리가 이번에 적용할 방법은 아래와 같습니다.

 

1. 고객번호 - 단계명 가운데 최초의 것만 가져옵니다.

 이렇게 하면 되겠죠? 

 CREATE TABLE PHASE1 AS

  SELECT *

  FROM (SELECT CUST_NO, STEP, ROW_NUMBER() OVER (PARTITION BY CUST_NO, STEP ORDER BY CUST_NO, STEP, LOG_DTM) AS SEQ

 FROM DTLOG A) A1

WHERE SEQ = 1;

 

2. 고객별로 단계에 해당 하는 경우의 수를 다 계산해 봅니다. 중단 단계별 세부 STEP을 모두 확인이 가능합니다.

 CREATE TABLE PHASE2 AS

 SELECT CUST_NO, LIST_AGG(STEP, ', ') WITHIN GROUP (ORDER BY STEP) AS STEP_AGG, MAX(STEP) AS FNL_STEP

 FROM PHASE1

 GROUP BY CUST_NO;

 

 SELECT FNL_STEP, STEP_AGG, COUNT(*) AS CN

 FROM PHASE2

 GROUP BY FNL_STEP, STEP_AGG

 ORDER BY 1, 2;

 

 이렇게 해서 각 최종 단계별 실제 모습을 확인할 수 있습니다.

 

3. 위처럼 각 중단 단계별 실제 현황을 파악하고 나서, 최종 단계인 26단계까지 도달한 고객이 모든 단계를 빠지지 않고 간다면 사용 가능하다고 판단합니다. 1에서 26단계까지 중간에 중단한 고객의 경우에는, 이전 단계를 모두 거쳐야만 정상적인 절차로 판단합니다. 따라서 1, 2, 3, 4, 5, 12단계를 거치는 고객의 경우 5단계에서 중단한 것으로 간주하고, 12단계는 해당 상품신청 단계가 아닌 다른 상품신청 단계에서 방문한 페이지로 가주하고 제외합니다.(STEP_CHK = 0)

 

CREATE TABLE PHASE3 AS

SELECT A1.*

FROM (SELECT CUST_NO, STEP, CASE WHEN LEAD(STEP) OVER (PARTITION BY CUST_NO, STEP ORDER BY CUST_NO, STEP) = STEP THEN 1 ELSE 0 END AS STEP_CHK

 FROM PHASE1 ) A1

WHERE STEP_CHK = 1;

반응형

'Oracle' 카테고리의 다른 글

SQL BOOSTER 책을 보고 있다.  (0) 2023.05.20
Oracle JSON 파싱  (0) 2023.05.04
Oracle null value fill  (0) 2023.03.29

+ Recent posts