본문 바로가기

Language/sql

[sql ] mysql 5분 단위 그룹핑 평균

시간 단위로 먼저 그룹핑 한 후에, 분단위를 5로 나누어 그룹핑한다.  

SELECT date_format(log_time, '%Y%m%d%H%i%S'), count(*), AVG(sensor_value)  
FROM kfri_landslide.2013_12_80_85 
WHERE log_time like '2013-12-05%'  
GROUP BY SUBSTR(date_format(log_time, '%Y%m%d%H%i%S'), 1, 10),  
	FLOOR(SUBSTR(date_format(log_time, '%Y%m%d%H%i%S'), 11, 2) / 5) ORDER BY idx


시간 및 분단위로 분리하는 함수를 사용한 SQL 문  

SELECT date_format(log_time, '%Y%m%d%H%i%S'), count(*), AVG(sensor_value)  
FROM kfri_landslide.2013_12_80_85  
WHERE log_time like '2013-12-05%'  
GROUP BY DATE(log_time), HOUR(log_time), FLOOR(MINUTE(log_time) / 5)


부가 사항 : 5분 단위의 데이터를 출력  

SELECT * FROM kfri_landslide.2013_12_80_85  
WHERE MOD(SUBSTR(date_format(log_time, '%Y%m%d%H%i%S'), 11, 2), 5) = 0
SELECT * FROM kfri_landslide.2013_12_80_85  
WHERE SUBSTR(date_format(log_time, '%Y%m%d%H%i%S'), 11, 2) % 5 = 0


실제 코드 : 에기연 DH_EMS - 5분 평균 (get_sm_anal_metering_hst())

`dh_ems`.`get_sm_anal_metering_hst`() 참조



'Language > sql' 카테고리의 다른 글

[sql] mysql event 관련  (0) 2021.11.24