안녕하세요.
현재 데이터를 시간별로 누적하는 테이블이 있습니다.
시간 ( t ) | 데이터값 ( d )
2015-01-01 01:00:01.123 | 1
2015-01-01 01:00:11.123 | 1
2015-01-01 01:00:21.123 | 1
2015-01-01 01:00:31.123 | 1
2015-01-01 01:00:41.123 | 2
이런식으로 누적되는 그래프가 있고, 데이터 값이 1 -> 2로 바뀌는 시점을 알려고합니다.
( 실제 데이터값 포맷은 다릅니다 )
그래서 이런식으로 접근해봤습니다.
SELECT d FROM table group by d;
이런식으로 해서 데이터를 묶으니 어떤값들이 존재했는지는 확인이 되는데
시간을 출력하려고하니 문제가 생기네요. 어떤식이 좋을까요?
테이블의 데이터는 약 9000개 정도 입니다.
그룹으로 해결하시면 d가 1->2->1->2 와같이 변경되었을 때 제대로 안 나올 것 같은데요..
with t as (select to_date('2015-01-01 01:00:01','yyyy-mm-dd hh24:mi:ss') t, 1 d from dual union all select to_date('2015-01-01 01:00:11','yyyy-mm-dd hh24:mi:ss') t, 1 d from dual union all select to_date('2015-01-01 01:00:21','yyyy-mm-dd hh24:mi:ss') t, 1 d from dual union all select to_date('2015-01-01 01:00:31','yyyy-mm-dd hh24:mi:ss') t, 1 d from dual union all select to_date('2015-01-01 01:00:41','yyyy-mm-dd hh24:mi:ss') t, 2 d from dual ) select * from ( select t, d, lag(d) over (order by t) d2 from t order by t ) where d != d2