"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > SQL을 사용하여 시계열 데이터를 5 분 간격으로 그룹화하는 방법은 무엇입니까?

SQL을 사용하여 시계열 데이터를 5 분 간격으로 그룹화하는 방법은 무엇입니까?

2025-03-23에 게시되었습니다
검색:421

How to Group Time-Series Data into 5-Minute Intervals Using SQL?

시계열 데이터 집계 데이터 : SQL에서 5 분 간격

시계열 데이터 분석에는 종종 데이터를 특정 간격으로 그룹화해야합니다. 이 안내서는 SQL을 사용하여 데이터를 5 분 간격으로 그룹화하는 방법을 보여줍니다. 정의 된 기간 내에 데이터를 집계 해야하는 시나리오를 해결합니다. 이 예제는 'Time'및 'ID'테이블의 데이터를 사용하여 'John'이라는 이름의 발생을 계산합니다. 도전은 개별 타임 스탬프 그룹에서 5 분 간격 집계로 이동하는 데 있습니다.

다른 데이터베이스 시스템에 대한 솔루션

최적의 접근 방식은 데이터베이스 시스템에 따라 다릅니다. 다음은 PostgreSQL 및 MySQL에 대한 솔루션입니다 :

postgresql

PostgreSQL은 extract ( 'epoch') 를 사용하여 유연한 접근 방식을 제공하여 유닉스 타임 스탬프 (Epoch 이후 초) 및 interval :

를 얻습니다.
SELECT
    date_trunc('minute', timestamp)   INTERVAL '5 minutes' * (extract(minute from timestamp)::int / 5) AS five_minute_interval,
    name,
    COUNT(b.name)
FROM time a, id b
WHERE ... -- Your WHERE clause here
GROUP BY five_minute_interval, name
ORDER BY five_minute_interval;

이 query는 먼저 date_trunc 를 사용하여 타임 스탬프를 분까지 잘라냅니다. 그런 다음 원래 타임 스탬프의 분을 기준으로 5 분의 배수를 추가하여 5 분 간격을 계산합니다.

mysql

mysql은 unix_timestamp () 및 정수 부서를 사용하여 간단한 솔루션을 제공합니다 :

SELECT
    FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(timestamp) / 300) * 300) AS five_minute_interval,
    name,
    COUNT(b.name)
FROM time a, id b
WHERE ... -- Your WHERE clause here
GROUP BY five_minute_interval, name
ORDER BY five_minute_interval;

이 쿼리는 타임 스탬프를 유닉스 타임 스탬프로 변환하고, 정수 부서를 300 (5 분 만에 초)로 수행 한 다음 from_unixtime () .

를 사용하여 타임 스탬프로 다시 변환합니다.

두 질문 모두 계산 된 5 분 간격과 이름으로 결과를 그룹화하여 원하는 집계 출력을 제공합니다. ... 를 특정 Where 절로 바꾸는 것을 잊지 마십시오. 주문의 주문은

clause를 연대순으로 표현합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3