집 >데이터 베이스 >MySQL 튜토리얼 >SQL에서 연속 행 간의 날짜 차이를 계산하는 방법은 무엇입니까?
SQL에서 순차적 레코드 간의 시간 간격 확인
이 튜토리얼에서는 SQL 테이블 내에서 특정 계좌 번호에 대한 연속 행 간의 날짜 차이를 계산하는 방법을 보여줍니다.
방법 1: 하위 쿼리 접근
이 쿼리는 하위 쿼리를 사용하여 날짜 차이를 계산합니다.
SELECT ID, AccountNumber, Date, NextDate, DATEDIFF(day, Date, NextDate) AS DateDifference FROM ( SELECT ID, AccountNumber, Date, ( SELECT MIN(Date) FROM YourTable T2 WHERE T2.AccountNumber = T1.AccountNumber AND T2.Date > T1.Date ) AS NextDate FROM YourTable T1 ) AS T
설명:
외부 쿼리는 ID, AccountNumber, Date, 계산된 NextDate 및 날짜 차이를 선택합니다. 내부 쿼리는 현재 행의 날짜보다 이후이고 동일한 계정에 속하는 최소 날짜를 찾아서 각 행의 다음 날짜(NextDate
)를 식별합니다. DATEDIFF(day, Date, NextDate)
일수 차이를 계산합니다.
방법 2: Self Join 기법
셀프 조인을 활용하는 보다 효율적인 대안은 다음과 같습니다.
SELECT T1.ID, T1.AccountNumber, T1.Date, MIN(T2.Date) AS NextDate, DATEDIFF(day, T1.Date, MIN(T2.Date)) AS DateDifference FROM YourTable T1 LEFT JOIN YourTable T2 ON T1.AccountNumber = T2.AccountNumber AND T2.Date > T1.Date GROUP BY T1.ID, T1.AccountNumber, T1.Date;
이 접근 방식은 LEFT JOIN
을 사용하여 각 행을 동일한 계좌 번호 및 이후 날짜를 갖는 후속 행과 비교합니다. MIN(T2.Date)
은 다음 날짜를 찾고 DATEDIFF(day, ...)
는 일수 차이를 계산합니다. 다음 행이 없는 행은 NULL
및 NextDate
에 대해 DateDifference
값을 갖습니다. DATEDIFF
의 첫 번째 인수는 차이 단위(여기서는 '일')를 지정합니다. 필요에 따라 조정합니다(예: '월', '연도').
위 내용은 SQL에서 연속 행 간의 날짜 차이를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!