(MYSQL)
A 라는 테이블에서 a라는 유저가 같은 기간내에 1개이상 사용한 흔적을 뽑으려고 하는데요...
정확히는..예를들어
통화 기록에서 a 유저가 2016-06-14 09:20:00 ~ 2016-06-14 09:30:00 동안 통화를 10분동안 했는데..
a 유저가 이 10분 내에 또 통화를 사용한 흔적이 있다면,
a 라는 결과값이 나오도록 하려 합니다...
시작 | 끝 | 사용자 | 통화 시간 |
2016-06-14 09:00:02 | 2016-06-14 09:10:02 | b | 600 |
2016-06-14 09:00:00 | 2016-06-14 09:30:00 | a | 1800 |
2016-06-14 09:20:00 | 2016-06-14 09:40:00 | a | 1200 |
2016-06-14 09:00:04 | 2016-06-14 10:00:04 | c | 3600 |
위 테이블을 A라치면...
제가 원하는건...a 라는 유저가 9시에 통화를 시작해서 9시반에 끝나는데..
a라는 유저가 또 통화도중에 9시20분에 통화한 기록이있죠... 요고를 잡아내려구요..
결국 쿼리를 날리면 결과는 [a] 가 뽑혀야 하는데....
이게 가능한가요??
힌트라도 부탁ㄷ릐겠습니다!!
감사합니다. 건승하세요!!!
WITH T AS ( SELECT TO_DATE('2016-06-14 9:00','yyyy-mm-dd hh24:mi') SDT,TO_DATE('2016-06-14 9:10','yyyy-mm-dd hh24:mi') EDT,'b' USERID,'600' TIMES FROM DUAL UNION ALL SELECT TO_DATE('2016-06-14 9:00','yyyy-mm-dd hh24:mi') ,TO_DATE('2016-06-14 9:30','yyyy-mm-dd hh24:mi') ,'a' ,'1800' FROM DUAL UNION ALL SELECT TO_DATE('2016-06-14 9:20','yyyy-mm-dd hh24:mi') ,TO_DATE('2016-06-14 9:40','yyyy-mm-dd hh24:mi') ,'a' ,'1200' FROM DUAL UNION ALL SELECT TO_DATE('2016-06-14 9:00','yyyy-mm-dd hh24:mi') ,TO_DATE('2016-06-14 10:00','yyyy-mm-dd hh24:mi') ,'c' ,'3600' FROM DUAL ) , USERTIMES AS-- PK가 없어서 PK 만드려고.. ( SELECT sdt, edt, userid, times, rownum rn FROM T ) SELECT DISTINCT USERID FROM ( SELECT SDT, EDT, USERID, TIMES , (SELECT COUNT(1) FROM USERTIMES WHERE USERID = A.USERID AND RN != A.RN AND (SDT < A.EDT AND EDT > A.SDT)) CNT FROM USERTIMES A ) WHERE CNT > 0