쿼리 패턴 검색 질문드립니다. 0 2 1,966

by 담덕 sql 패턴 [2016.02.20 14:09:26]


안녕하세요

제목을 어떻게 적어야 할지 몰라 임의로 적었습니다.

테이블에 데이터는 아래와 같이 있습니다.

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 를 보여 주면 됩니다.

요점은 특정 패턴과 같은걸 찾아서

다음번에 뭐가 나왔는지를 확인 할려는 것입니다.

도무지 어떻게 짜야 할지 몰라 질문드립니다 

쿼리만으로 안된다면 다른 좋은 방법좀 알려주세요

 

 

 

by 물뿌리개 [2016.02.21 04:18:36]

쿼리로 됩니다. 조인하면 되요.


by 마농 [2016.02.22 09:20:16]
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||'%'
;

 

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