>데이터 베이스 >MySQL 튜토리얼 >특정 시간 간격에 대해 GROUP BY 절을 사용하여 MySQL에서 시간 기반 데이터를 어떻게 집계할 수 있나요?

특정 시간 간격에 대해 GROUP BY 절을 사용하여 MySQL에서 시간 기반 데이터를 어떻게 집계할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2025-01-04 08:58:35544검색

How can I aggregate time-based data in MySQL using the GROUP BY clause for specific time intervals?

시간 기반 데이터 집계

MySQL의 GROUP BY 절을 사용하면 특정 간격 또는 시간 세그먼트에 걸쳐 데이터를 집계할 수 있습니다. 이는 타임스탬프가 있는 데이터를 처리할 때 특히 유용하며 원하는 시간 범위에 걸쳐 데이터를 효과적으로 요약하고 분석할 수 있습니다.

이를 달성하려면 MySQL이 Unix 타임스탬프를 사용하여 날짜와 시간을 표현한다는 사실을 활용할 수 있습니다. 내부적으로. Unix 타임스탬프를 원하는 간격(예: 10초 또는 30초)으로 나누어 데이터를 특정 시간 세그먼트로 그룹화할 수 있습니다.

GROUP BY를 사용하여 "시간 세그먼트"별로 그룹화하는 구문은 다음과 같습니다.

GROUP BY UNIX_TIMESTAMP(time_stamp) DIV <interval>

<간격> 원하는 시간 세그먼트(초)입니다. 예:

10초 간격:

GROUP BY UNIX_TIMESTAMP(time_stamp) DIV 10

30초 간격:

GROUP BY UNIX_TIMESTAMP(time_stamp) DIV 30

사용 이 접근 방식을 사용하면 특정 시간 세그먼트 내에서 데이터를 쉽게 집계할 수 있습니다. 각 세그먼트에 대한 개수 열의 합계를 계산하려면 다음 쿼리를 사용할 수 있습니다.

SELECT
  UNIX_TIMESTAMP(time_stamp) DIV <interval> AS time_segment,
  SUM(count) AS total_count
FROM table_name
GROUP BY time_segment

예를 들어 10초 간격의 개수 값 합계를 얻으려면 다음 쿼리를 사용합니다.

SELECT
  UNIX_TIMESTAMP(time_stamp) DIV 10 AS time_segment,
  SUM(count) AS total_count
FROM table_name
GROUP BY time_segment

이렇게 하면 귀하가 제공한 원하는 결과와 유사한 출력이 생성됩니다.

time_segment total_count
2010-06-15 23:35:00 1
2010-06-15 23:35:30 7544
2010-06-17 10:39:35 450

time_segment 결과는 각 세그먼트의 시작을 나타내는 Unix 타임스탬프입니다. "2010-06-15 23:35:00 ~ 2010-06-15 23:35:30"과 같이 보다 사용자에게 친숙한 형식으로 시간 세그먼트를 표시하려면 쿼리에 추가 문자열 형식을 사용할 수 있습니다.

값을 조정하여 따라서 시간 기반 데이터를 원하는 시간 세그먼트로 그룹화하고 집계하여 특정 기간 동안의 데이터를 효과적으로 분석할 수 있습니다.

위 내용은 특정 시간 간격에 대해 GROUP BY 절을 사용하여 MySQL에서 시간 기반 데이터를 어떻게 집계할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.