안녕하세요..
1분마다 데이터가 insert되는 테이블이 있습니다.
그중에서 create_date(smalldatetime) 필드값으로 5분 혹은 10분 ..등(예로 5분) 입력받으면
1시간 기준으로
5분일경우 => 5분, 10분, 15분, 20분.... 60분
10분일경우 => 10분, 20분, 30분....60분
30분일경우 => 30분, 60분
이렇게 해당분별로 group화 하여 최대값(power)을 표현하고 싶습니다.
매 5분일때 : 0분~4분, 5분~9분, 10분~14분......
매 10분일때 : 0분~9분, 10분~19분, 20분~29분.....
:
PK : id, no, create_date
데이터 형식입니다.
---------------------------------------------------------------------------------
id no create_date power
---------------------------------------------------------------------------------
1 1 2015-01-01 00:00:00 6
1 1 2015-01-01 00:01:00 5
1 1 2015-01-01 00:02:00 5
1 1 2015-01-01 00:03:00 5
1 1 2015-01-01 00:04:00 6
1 1 2015-01-01 00:05:00 5
1 1 2015-01-01 00:06:00 1
1 1 2015-01-01 00:07:00 0
1 1 2015-01-01 00:08:00 4
1 1 2015-01-01 00:09:00 2
1 1 2015-01-01 00:10:00 6
1 1 2015-01-01 00:11:00 3
:
:
:
create_date에서 5분으로 선택했다면 결과값은
---------------------------------------------------------------------------------
id no create_date power
---------------------------------------------------------------------------------
1 1 2015-01-01 00:05:00 6 (0분부터 4분까지의 max데이터)
1 1 2015-01-01 00:10:00 5 (5분부터 9분까지의 max데이터)
1 1 2015-01-01 00:15:00 ? (10분부터 14분까지의 max데이터, 위 데이터가 없어서 "?"로 표시했습니다.)
:
:
create_date에서 10분으로 선택했다면 결과값은
---------------------------------------------------------------------------------
id no create_date power
---------------------------------------------------------------------------------
1 1 2015-01-01 00:10:00 6 (0분부터 9분까지의 max데이터)
1 1 2015-01-01 00:20:00 ? (10분부터 19분까지의 max데이터, 위 데이터가 없어서 "?"로 표시했습니다.)
:
:
위 처럼 결과값을 나타내는 쿼리 좀 부탁드립니다. (사실 이것저것 만져놓은 쿼리를 올리지 못한점 양해바랍니다.)
Comment 1
-
르매
2015.06.15 18:21
5분 이라면...
SELECT DATEADD(MINUTE, DATEDIFF(MINUTE, 0, create_date) / 5 * 5, 0)
, MAX(power)
FROM ~
GROUP BY DATEDIFF(MINUTE, 0, create_date) / 5