>  기사  >  데이터 베이스  >  SQL 테이블에서 연속 행 간의 시간 차이를 계산하는 방법은 무엇입니까?

SQL 테이블에서 연속 행 간의 시간 차이를 계산하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-15 12:55:03296검색

How to Calculate Time Difference Between Consecutive Rows in a SQL Table?

연속 행 간의 시간 차이 계산

이 작업은 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 및 각 레코드를 즉시 일치시키는 추가 필터링 Successor.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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