>데이터 베이스 >MySQL 튜토리얼 >카운트 쿼리를 위해 타임스탬프를 5분 간격으로 그룹화하는 방법은 무엇입니까?

카운트 쿼리를 위해 타임스탬프를 5분 간격으로 그룹화하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-15 08:15:45800검색

How to Group Timestamps into 5-Minute Intervals for Count Queries?

계산 쿼리에 대해 타임스탬프를 5분 간격으로 그룹화

질문:

특정 시간 범위에서 John의 발생 횟수를 계산하는 쿼리이지만 결과는 그룹화되지 않은 타임스탬프와 해당 횟수입니다. 목표는 결과를 5분 간격으로 그룹화하는 것입니다.

해결책:

결과를 5분 간격으로 그룹화하려면 특정 구문으로 MySQL 및 PostgreSQL을 사용할 수 있습니다.

PostgreSQL:

<code class="language-sql">SELECT
    date_trunc('minute', timestamp) + INTERVAL '5 minutes' * (EXTRACT(MINUTE FROM timestamp)::integer / 5) AS five_minute_interval,
    name,
    COUNT(b.name)
FROM time a, id 
WHERE …
GROUP BY five_minute_interval, name
ORDER BY five_minute_interval;</code>

MySQL:

<code class="language-sql">SELECT
    FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(timestamp) / 300) * 300) AS five_minute_interval,
    name,
    COUNT(b.name)
FROM time a, id
WHERE …
GROUP BY five_minute_interval, name
ORDER BY five_minute_interval;</code>

두 쿼리 모두에서 GROUP BY 절은 타임스탬프를 반올림한 결과를 300(5분 간격을 나타냄)으로 나눈 값으로 그룹화됩니다. 이는 타임스탬프에 대한 5분 구간을 효과적으로 생성하고 각 타임스탬프를 해당 구간에 할당합니다. PostgreSQL은 date_trunc 함수를 사용하여 타임스탬프의 잘림 및 그룹화를 보다 명확하게 처리하는 반면, MySQL은 FROM_UNIXTIMEFLOOR 함수를 사용하여 동일한 기능을 수행합니다.

출력:

이제 출력에는 5분 간격으로 그룹화된 결과와 해당 John 발생 횟수가 표시됩니다.

<code>five_minute_interval       name  COUNT(b.name)
------------------------  ----  -------------
2010-11-16 10:30:00       John  2
2010-11-16 10:35:00       John  10
2010-11-16 10:40:00       John  0
2010-11-16 10:45:00       John  8
2010-11-16 10:50:00       John  0
2010-11-16 10:55:00       John  11</code>

참고: 코드의 WHERE … 부분은 실제 상황에 따라 쿼리 조건으로 바꿔야 합니다. 또한 결과의 가독성을 보장하기 위해 ORDER BY five_minute_interval 절이 추가되었습니다. 향상된 SQL 문은 5분 간격으로 그룹화를 보다 정확하게 구현하고 잠재적인 반올림 오류를 방지합니다.

위 내용은 카운트 쿼리를 위해 타임스탬프를 5분 간격으로 그룹화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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