집 >데이터 베이스 >MySQL 튜토리얼 >SQL 테이블에서 연속 행 간의 시간 차이를 계산하는 방법은 무엇입니까?
연속 행 간의 시간 차이 계산
이 작업은 StartDate 열이 포함된 테이블에서 연속 레코드 간의 시간 차이를 확인하는 것입니다. 이를 달성하기 위해 셀프 조인을 활용하고 각 레코드를 테이블의 후속 레코드와 비교할 수 있습니다.
셀프 조인 사용:
연속 비교 레코드의 경우 테이블에서 셀프 조인을 사용할 수 있습니다. 쿼리 예는 다음과 같습니다.
SELECT A.requestid, A.starttime, (B.starttime - A.starttime) AS timedifference FROM MyTable A INNER JOIN MyTable B ON B.requestid = (A.requestid + 1) ORDER BY A.requestid ASC;
이 쿼리는 각 레코드(A)가 다음 레코드(B)와 쌍을 이루는 조인된 테이블을 생성합니다. 계산된 열 시차는 두 레코드 간의 시간 차이를 제공합니다.
비연속 요청 ID 처리:
요청 ID가 연속적이지 않은 경우 CROSS JOIN 및 추가 필터링을 통해 각 레코드를 직속 후속 레코드와 일치시킵니다.
SELECT A.requestid, A.starttime, (B.starttime - A.starttime) AS timedifference FROM MyTable A CROSS JOIN MyTable B WHERE B.requestid IN (SELECT MIN(C.requestid) FROM MyTable C WHERE C.requestid > A.requestid) ORDER BY A.requestid ASC;
이 쿼리는 요청 ID가 연속적이지 않은 경우에도 각 레코드가 직속 후속 레코드와 일치하는지 확인합니다.
샘플 데이터:
저자가 제공한 샘플 데이터 고려:
requestId | startdate |
---|---|
1 | 2011-10-16 13:15:56 |
2 | 2011-10-16 13:15:59 |
3 | 2011-10-16 13:15:59 |
4 | 2011-10-16 13:16:02 |
5 | 2011-10-16 13:18:07 |
출력:
적용 샘플 데이터에 대한 위의 쿼리는 다음과 같은 출력을 생성합니다.
requestId | startdate | timedifference |
---|---|---|
1 | 2011-10-16 13:15:56 | NULL |
2 | 2011-10-16 13:15:59 | 00:00:03 |
3 | 2011-10-16 13:15:59 | 00:00:00 |
4 | 2011-10-16 13:16:02 | 00:00:03 |
5 | 2011-10-16 13:18:07 | 00:02:05 |
위 내용은 SQL 테이블에서 연속 행 간의 시간 차이를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!