집 >데이터 베이스 >MySQL 튜토리얼 >카운트 쿼리를 위해 타임스탬프를 5분 간격으로 그룹화하는 방법은 무엇입니까?
계산 쿼리에 대해 타임스탬프를 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_UNIXTIME
및 FLOOR
함수를 사용하여 동일한 기능을 수행합니다.
출력:
이제 출력에는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!