2013-12-13 2 views
1

기록 데이터를 저장하는 테이블이 있습니다. 나는이 쿼리에 30 초마다 다른 종류의 소스에서 한 행을 삽입하고 분명히 연관된 타임 스탬프가있다.쿼리 - 일련의 타임 스탬프로 빈 간격을 찾습니다.

매개 변수를 disservice로 1 시간으로 설정합시다.

시간을 기준으로 서비스를 청구 했으므로 이번 달에 내 1 시간 간격과 같은 간격이있는 기간이있는 경우 특정 달에 예를 들어 알아야합니다. . 나는 그것이 소요되는 시간과 메모리이다 생각 나는 한 번에 하나씩 비교하는 모든 레코드를 통해 루프 함수를 작성하지 않으

tid serial primary key, 
tunitd id int, 
tts timestamp default now(), 
tdescr text 

:

테이블의 단순화 된 구조는 같은 것 .

SQL에서 직접 PostgreSQL에서 간격 유형을 사용하는 방법이 있습니까?

감사합니다.

+0

예, SQL 가능합니다. 지금까지 뭐 해봤 어? – cha

답변

2

이 작은 SQL 쿼리는 둘 이상의 시간 이상 지속 모든 격차를 표시합니다

select tts, next_tts, next_tts-tts as diff from 
(select a.tts, min(b.tts) as next_tts 
from test1 a 
inner join test1 b ON a.tts < b.tts 
GROUP BY a.tts) as c 
where next_tts - tts > INTERVAL '1 hour' 
order by tts; 

SQL Fiddle

관련 문제