시계열 데이터 집계 데이터 : 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
절로 바꾸는 것을 잊지 마십시오. 주문의
주문은
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3