로그성 데이터 패턴 뽑는데 LAG,LEAD 함수를 이용해 뽑아 보는데 쉽지 않네요.
중간값은 무시하고 순서기준 특정 코드 순서가 1건이라도 나오는 대상을 해당 패턴으로 보고
수량을 집계해 보려고 합니다.
로그성 데이터라 수량이 많습니다.
어려울 때마다 여기서 도움 얻는데 감사합니다.
특히 마농님 자주 도움 주셔서 감사합니다.
원하는 패턴1 : AA->BB->CC->EE
원하는 패턴2 : HH->JJ->LL
조건1 : 패턴 순서 역으로 가는 경우 OK
조건2 : 한번 할당한 대상은 중복 할당 X
조건3 : 패턴 할당 우선 순위 : 1->2
조건4 : 시간 기준 중복 존재
WITH t AS
(
SELECT 'A' 이름, 'AA' EVENT_LOG, '201608121212' 일시 FROM dual UNION ALL -- 패턴1
SELECT 'A' 이름, 'BB' EVENT_LOG, '201608121212' 일시 FROM dual UNION ALL -- 패턴1
SELECT 'A' 이름, 'CC' EVENT_LOG, '201608121215' 일시 FROM dual UNION ALL -- 패턴1
SELECT 'A' 이름, 'DD' EVENT_LOG, '201608121217' 일시 FROM dual UNION ALL -- 패턴1
SELECT 'A' 이름, 'EE' EVENT_LOG, '201608121219' 일시 FROM dual UNION ALL -- 패턴1
SELECT 'A' 이름, 'FF' EVENT_LOG, '201608121221' 일시 FROM dual UNION ALL
SELECT 'A' 이름, 'EE' EVENT_LOG, '201608121223' 일시 FROM dual UNION ALL
SELECT 'A' 이름, 'GG' EVENT_LOG, '201608121225' 일시 FROM dual UNION ALL
SELECT 'A' 이름, 'BB' EVENT_LOG, '201608121227' 일시 FROM dual UNION ALL
SELECT 'A' 이름, 'HH' EVENT_LOG, '201608121228' 일시 FROM dual UNION ALL -- 패턴2
SELECT 'A' 이름, 'LL' EVENT_LOG, '201608121230' 일시 FROM dual UNION ALL -- 패턴2
SELECT 'A' 이름, 'JJ' EVENT_LOG, '201608121232' 일시 FROM dual UNION ALL -- 패턴2
SELECT 'A' 이름, 'JJ' EVENT_LOG, '201608121234' 일시 FROM dual UNION AL -- 패턴2
SELECT 'A' 이름, 'LL' EVENT_LOG, '201608121236' 일시 FROM dual UNION ALL -- 패턴2
SELECT 'A' 이름, 'KK' EVENT_LOG, '201608121238' 일시 FROM dual UNION ALL -- 패턴2
SELECT 'A' 이름, 'AA' EVENT_LOG, '201608121240' 일시 FROM dual UNION ALL
SELECT 'A' 이름, 'CC' EVENT_LOG, '201608121212' 일시 FROM dual UNION ALL
SELECT 'A' 이름, 'HH' EVENT_LOG, '201608121214' 일시 FROM dual UNION ALL -- 패턴2
SELECT 'A' 이름, 'LL' EVENT_LOG, '201608121216' 일시 FROM dual UNION ALL -- 패턴2
SELECT 'A' 이름, 'JJ' EVENT_LOG, '201608121218' 일시 FROM dual UNION ALL -- 패턴2
SELECT 'A' 이름, 'EE' EVENT_LOG, '201608121220' 일시 FROM dual UNION ALL -- 패턴2
SELECT 'A' 이름, 'LL' EVENT_LOG, '201608121222' 일시 FROM dual UNION ALL -- 패턴2
SELECT 'B' 이름, 'AA' EVENT_LOG, '201608121225' 일시 FROM dual UNION ALL
SELECT 'B' 이름, 'BB' EVENT_LOG, '201608121227' 일시 FROM dual UNION ALL
SELECT 'B' 이름, 'LL' EVENT_LOG, '201608121228' 일시 FROM dual UNION ALL
SELECT 'B' 이름, 'EE' EVENT_LOG, '201608121230' 일시 FROM dual
)
|