2015-01-27 12 views
0

시간이 지남에 따라 일부 데이터가 생성되었습니다. 나는 매 시간마다 일어난 "상호 작용"의 수를 세는 데 아래의 쿼리를 사용했다.매 시간마다 집계 된 데이터를 계산하십시오.

SELECT COUNT(*) as Quantity, FORMAT(cast(InteractionDate as datetime2), 'yyyy-MM-dd HH') as Datum 
FROM Interaction as in 
INNER JOIN Mission as mi 
on in.MissionID=mi.MissionID 
WHERE InteractionDate between '2015-01-13 12' AND '2015-01-22 12' 
GROUP BY FORMAT(cast(InteractionDate as datetime2), 'yyyy-MM-dd HH') 
ORDER BY Datum 

쿼리는 위의 나에게주는이 :

116 | 2015-01-15 00 
37 | 2015-01-15 01 
17 | 2015-01-15 02 

지금 내가 모든 n 번째 시간에 상호 작용의 집계 번호를하고자합니다. 3 시간마다 데이터를 얻으 려한다면 다음과 같이 입력하십시오.

170 | 2015-01-15 02 

어떻게하면됩니까?

+0

"매 n 시간마다 상호 작용 수 집계"란 무엇을 의미합니까? 샘플 데이터와 원하는 결과가 항상 도움이됩니다. –

+0

나는 질문을 편집했다, 그것이 조금 상황을 명확하게하기를 바란다. – omegasbk

답변

0

날짜와 시간을 따로 따로 그룹화 할 수 있습니다. 그러면 시간 표현이 가능해집니다. 예를 들어;

GROUP BY cast(InteractionDate as date), (hour(InteractionDate)/4) 

이는 등 다음에서 정오에 첫 번째 양동이에 오전 6시 당신에게 오전 6시을 자정을 줄 것

0

당신은 DATEDIFF를 사용하여 간격을 받고, 다음함으로써 시간의 기간으로 데이터를 집계 할 수 있습니다 이 같은 정수 나누기 :

group by datediff(hour, '1990-01-01T00:00:00', yourDatetime)/3 

수학은 다음과 같은 결과로 3 시간 연속 그룹을 산출 무엇을, 기준일로부터 시간의 정수 번호를, 3하여 정수 나누기를 확인합니다. 그런 다음 데이터를 그룹화하는 데 사용합니다.

이 값은 지정한 기준 날짜 - 시간에서 시간을 얻습니다. 이 경우 유일하게 중요한 부분은 3 시간 간격의 초기 시점을 결정할 수있는 시간 부분입니다. 이 경우 간격은 [00:00 to 03:00], [03:00 to 06:00] 등입니다. 다른 간격이 필요한 경우 다른 기본 날짜 - 시간을 설정하십시오. 예를 들어 '1990-01-01T00:01:00'[01:00 to 04:00], [04:00 to 07:00] 등의 간격을 제공합니다.

는 추가 정보를 얻을이 전체 답변을 참조하십시오 : 당신은 당신이 집계 된 값으로부터 떨어져, 각 구간의 시작과 끝 날짜와 시간을 표시 할 수있는 방법 볼이 답변에 Group DateTime into 5,15,30 and 60 minute intervals

합니다. 그리고이 솔루션에 대한 더 자세한 정보를 얻으십시오.

관련 문제