insert된 시간의 간격이 5분 이하인 데이터들을 조회할 수 있나요? 0 2 326

by 김쿠쿠 [2018.04.16 16:08:20]


해당 테이블에는 create_date default sysdate컬럼이 존재 합니다.

통상 한 user에 대해서 5분에 1개씩 데이터가 insert되어야 정상이지만,

5분 안에 1개 이상의 data가 insert된 것으로 확인이 됩니다.

 

이런 경우, 해당 데이터를 조회할수 있는 방법이 있을까요?

하나의 user에 대해서 5분안에 데이터가 2개 이상 insert되었는지 확인할 수 있는 쿼리가 가능할까요?

 

딱히 다른 조건은 없습니다.

by 신이만든지기 [2018.04.16 16:43:40]
WITH T AS
     ( SELECT    TRUNC( SYSDATE ) + ( CEIL( DBMS_RANDOM.VALUE( 3, 5 )) * LEVEL ) / 60 / 24 CREATE_DATE
            FROM DUAL
      CONNECT BY LEVEL <= 20 )
SELECT CREATE_DATE
     , BEFORE_DATE
     , INTERVAL_BEFORE
     , INTERVAL_AFTER
     , CASE
           WHEN INTERVAL_BEFORE + INTERVAL_AFTER <= 5 THEN 'Y'  -- 6으로 설정하면 에러 데이터 기준이 달라집니다.
       END ERROR_YN
  FROM ( SELECT CREATE_DATE
              , LAG( CREATE_DATE ) OVER( ORDER BY CREATE_DATE ) BEFORE_DATE
              , ( CREATE_DATE - LAG( CREATE_DATE ) OVER( ORDER BY CREATE_DATE )) * 60 * 24 INTERVAL_BEFORE
              , ( LEAD( CREATE_DATE ) OVER( ORDER BY CREATE_DATE ) - CREATE_DATE ) * 60 * 24 INTERVAL_AFTER
          FROM T );

현재 들어온 시각을 기준으로 앞뒤 데이터의 시간차이를 계산하면 될 것 같습니다.


by 마농 [2018.04.16 17:54:08]

5분에 한개씩 들어올때. 정확하게 5분단위로 들어올까요?
어떨 땐 5분1초, 또 어떨 땐 4분59초가 걸리기도 할 듯 한데요?
4분59초 걸린 것도 걸러내야 하나요?

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