/- 3초 정밀도의 MySQL GROUP BY DateTime
문제 설명
제공됨 ID, 타임스탬프, 제목 열이 있는 테이블의 목표는 서로 3초 이내에 발생하는 레코드를 그룹화하는 것입니다. 이 시나리오에서는 타임스탬프가 15:00:00과 15:00:02인 행이 함께 그룹화됩니다.
해결책
체인의 시작을 식별하는 대신 개별 행에서는 연결 타임스탬프에 중점을 두겠습니다.
쿼리 1: 체인 시작 타임스탬프 결정
<code class="mysql">SELECT DISTINCT Timestamp FROM Table a LEFT JOIN Table b ON (b.Timestamp >= a.Timestamp - INTERVAL 3 SECONDS AND b.Timestamp < a.Timestamp) WHERE b.Timestamp IS NULL
이 쿼리는 위에 타임스탬프가 없는 타임스탬프를 반환합니다. 3초, 체인의 시작을 나타냅니다.
쿼리 2: 레코드를 체인 시작 타임스탬프와 연결
<code class="mysql">SELECT Table.id, MAX(StartOfChains.TimeStamp) AS ChainStartTime FROM Table JOIN ([query #1]) StartOfChains ON Table.Timestamp >= StartOfChains.TimeStamp GROUP BY Table.id</code>
각 행에 대해 이 쿼리는 가장 큰 체인을 식별합니다. -시작 타임스탬프(행의 타임스탬프 이전에 발생).
최종 GROUP BY 작업
<code class="mysql">SELECT COUNT(*) --or whatever FROM Table JOIN ([query #2]) GroupingQuery ON Table.id = GroupingQuery.id GROUP BY GroupingQuery.ChainStartTime</code>
이 쿼리는 쿼리 2의 GroupingQuery 테이블을 사용하여 다음을 기반으로 레코드를 그룹화합니다. ChainStartTime 열을 사용하면 각 시간 그룹 내에서 집계 계산이 가능합니다.
위 내용은 MySQL에서 DateTime 데이터로 작업할 때 /- 3초의 GROUP BY 정밀도를 달성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!