DATE SCORE
2013.03.21.07:00 17
2013.03.21.08:00 18
2013.03.21.09:00 19
2013.03.21.10:00 20
2013.03.21.11:00 21
2013.03.21.12:00 22
2013.03.21.13:00 23
2013.03.21.14:00 24
2013.03.21.15:00 25
2013.03.21.16:00 26
2013.03.21.17:00 27
위와같이 컬럼이 DATE, SCORE가있을때
07:00 부터 09:00 까지 SCORE의 평균
10:00 부터 13:00 까지 SCORE의 평균
14:00 부터 17:00 까지 SCORE의 평균
을 각각 시간대별로 구하려면 어떻게 해야되나요?
Comment 5
-
catchv
2013.03.22 00:25
-
건우아빠
2013.03.22 09:43
catchv님 답글에 추가로
CEILING(DATEPART(HH, GETDATE() ) / 3.) TimeGubun 로 시간을 구분 하신 다음
같이 그룹으로 잡으시고 편균을 내시면 됩니다.
질문 내용으로보면 3시간 단위(고정)라 CEILING을 쓴거구요.
가변적으로 구간이 다르다면 CASE로 구간을 분리하시는것도 방법입니다.
CASE DATEPART(HH, GETDATE() )
WHEN 1 THEN 'TIME1'
WHEN 2 THEN 'TIME1'
WHEN 3 THEN 'TIME1'
WHEN 4 THEN 'TIME2'
WHEN 5 THEN 'TIME2'
WHEN 6 THEN 'TIME3'
WHEN 7 THEN 'TIME3'
WHEN 8 THEN 'TIME4'
WHEN 9 THEN 'TIME4'
WHEN 10 THEN 'TIME4'
....
END
-
버스컷
2013.03.22 10:31
죄송한데 HH라면 뮐말하는지 몰겠어요ㅠ -
건우아빠
2013.03.22 11:42
DATEPART를 찾아보시면 시간을 추출할때 구분입니다.
-
블랙조
2013.04.03 11:49
select
avg(case when datepart(hour, date1) in (7, 8, 9) then score end),
avg(case when datepart(hour, date1) in (10, 11, 12, 13) then score end),
avg(case when datepart(hour, date1) in (14, 15, 16, 17) then score end)
from score_
SELECT AVG(Score)
FROM ~~~
WHERE DATE BETWEEN 시작 AND 끝
-- catchv