2014-02-10 2 views
0

신호 이름, 값 및 타임 스탬프가있는 테이블이 있습니다. 이 신호는 1 샘플/초의 샘플링 속도로 기록됩니다. 이제 저는 달 값에 대한 그래프를 그려보고 싶습니다. 시스템이 몇 초 안에 그것을 수행하는 것은 매우 무거워지고 있습니다. 그래서 제 질문은 "다른 값으로 1 값/분을 볼 수있는 방법이 있습니까? 매 60 번째 행을보고 싶습니다." 데이터가 정말 정기적 경우, 당신은 또한 초 값을 추출하고 때를 확인할 수 있습니다타임 스탬프를 기준으로 매 10 번째 행

select signalname, value, timestamp 
from (select t.*, 
      row_number() over (order by timestamp) as seqnum 
     from table t 
    ) t 
where seqnum % 60 = 0; 

:

답변

2

당신은 행을 열거 할 row_number() 기능을 사용하고 행을 얻을 모듈로 연산을 사용할 수 있습니다 0입니다 :

select signalname, value, timestamp 
from table t 
where datepart(second, timestamp) = 0 

timestamp 적절한 날짜/시간 형식으로 저장되어 있다고 가정합니다. 대신 샘플링

+0

고맙습니다. 질문에 한 번 더 추가해주세요.이 테이블을 다른 테이블과 다른 테이블과 다른 사람들과 합치면 어떨까요? – Furqan

+0

@Furqan. . . 그것은 작동해야합니다. 그러나, 당신은 또한 현재 질의를'with' 문에 두어 두 세트의 로직을 "분리"할 수 있습니다. –

1

, 당신은 당신의 음모에 대한 일분의 평균을 사용할 수

select name 
,  min(timestamp) 
,  avg(value) 
from Yourtable 
group by 
     name 
,  datediff(minute, '2013-01-01', timestamp) 

당신이 달을 차트하는 경우는, 심지어 시간당 평균 충분히 설명 될 수 있습니다.

+0

각 60 개의 샘플 평균을 의미합니까? – Furqan

+0

각 GROUP BY 표현식은 외부 참조가 아닌 하나 이상의 열을 포함해야합니다. 오류입니다. – Furqan

관련 문제