[MySQL] 5분 단위로 그룹핑하여 평균값 계산Database/MySQL2023. 1. 12. 14:27
Table of Contents
반응형
MYSQL을 사용하여 5분 단위로 그룹핑하여 평균값 계산하는 방법에 대해 알아보겠습니다.
테이블 생성
먼저 분 단위로 그룹핑과 평균값 계산을 위해 DATETIME, FLOAT 타입이 포함된 테이블을 생성합니다.
CREATE TABLE test (
id INT NOT NULL AUTO_INCREMENT,
sensor_value FLOAT,
log_time DATETIME,
PRIMARY KEY(id),
) ENGINE=MYISAM CHARSET=utf8;
테이블이 생성되면 값을 입력합니다.
첫 번째 방법
시간 단위로 먼저 그룹핑한 후 분단위를 5로 나누어 그룹핑합니다.
SELECT date_format(log_time, '%Y%m%d%H%i%S'), AVG(sensor_value)
FROM test
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 log_time;
또는 아래와 같이 SUBSTR 함수를 빼고 format을 다르게 해서 할 수 있습니다.
SELECT date_format(log_time, '%Y%m%d%H%i%S'), AVG(sensor_value)
FROM test
GROUP BY date_format(log_time, '%Y%m%d%H'),
FLOOR(date_format(log_time, '%i') / 5);
ORDER BY log_time;
FLOOR 함수는 가장 가까운 정수로 버림하여 반환합니다.
두 번째 방법
시간 및 분 단위로 분리하는 함수를 사용합니다.
SELECT date_format(log_time, '%Y%m%d%H%i%S'), AVG(sensor_value)
FROM test
GROUP BY DATE(log_time), HOUR(log_time), FLOOR(MINUTE(log_time) / 5)
ORDER BY log_time;
DATE, HOUR, MINUTE 함수는 날짜, 시간, 분의 값을 반환합니다.
5분 단위 데이터 출력
SELECT *
FROM test
WHERE MOD(date_format(log_time, '%i'), 5) = 0
또는
SELECT *
FROM test
WHERE date_format(log_time, '%i') % 5 = 0
MOD 함수는 첫 번째 값을 두 번째 값으로 나눈 나머지를 반환합니다.
참고
date_format 함수의 두 번째 항목인 format 내용은 아래 사이트에서 자세하게 확인해 볼 수 있습니다.
반응형
'Database > MySQL' 카테고리의 다른 글
필수로 알아야할 13가지 SQL 문법 (0) | 2024.11.23 |
---|---|
[MySQL] 스토리지 엔진(Storage Engine) (0) | 2022.12.03 |
[MySQL] 유용 명령어 (0) | 2022.12.03 |
[MySQL] ALTER TABLE 구문 정리 (0) | 2022.11.29 |
[MySQL] 인덱스(INDEX) 정리 (0) | 2022.11.29 |
@고지니어스 :: 규니의 개발 블로그
IT 기술과 개발 내용을 포스팅하는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!