안녕하세요
제목을 어떻게 적어야 할지 몰라 임의로 적었습니다.
테이블에 데이터는 아래와 같이 있습니다.
idx | datetime | result
1 날짜시간 0
2 날짜시간 1
3 날짜시간 1
4 날짜시간 1
5 날짜시간 0
6 날짜시간 1
7 날짜시간 0
이런식으로 데이터가 3분에 한개씩 5만개 이상 있습니다.
필드는 idx 주키, datetime 날짜시간,
result 는 0 혹은 1 의 랜덤값 입니다.
제가 쿼리 하고 싶은 내용은
예를 들어 result 의 0, 1 의 패턴을 찾는다면 위 데이터로는
주키 1, 2번과 동일 하고 주키 5, 6번과 동일 하니
결과값 보여 줄때 주키 1, 2, 3과 5, 6, 7을 보여 줘야 합니다.
패턴 1, 1, 1 을 찾는다면 주키 기준으로 2, 3, 4와 같으니
결과로는 2, 3, 4, 5 를 보여 주면 됩니다.
요점은 특정 패턴과 같은걸 찾아서
다음번에 뭐가 나왔는지를 확인 할려는 것입니다.
도무지 어떻게 짜야 할지 몰라 질문드립니다
쿼리만으로 안된다면 다른 좋은 방법좀 알려주세요
WITH t AS ( SELECT 1 idx, '날짜시간' datetime, 0 result FROM dual UNION ALL SELECT 2, '날짜시간', 1 FROM dual UNION ALL SELECT 3, '날짜시간', 1 FROM dual UNION ALL SELECT 4, '날짜시간', 1 FROM dual UNION ALL SELECT 5, '날짜시간', 0 FROM dual UNION ALL SELECT 6, '날짜시간', 1 FROM dual UNION ALL SELECT 7, '날짜시간', 0 FROM dual ) SELECT idxs, results FROM (SELECT idx, datetime, result , p , wm_concat(idx) OVER(ORDER BY idx ROWS BETWEEN CURRENT ROW AND n FOLLOWING) idxs , wm_concat(result) OVER(ORDER BY idx ROWS BETWEEN CURRENT ROW AND n FOLLOWING) results FROM t --, (SELECT '0,1' p, 2 n FROM dual) , (SELECT '1,1,1' p, 3 n FROM dual) ) WHERE results LIKE p||'%' ;