>데이터 베이스 >MySQL 튜토리얼 >SQL에서 연속 행 간의 날짜 차이를 계산하는 방법은 무엇입니까?

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

Linda Hamilton
Linda Hamilton원래의
2025-01-08 08:36:40456검색

How to Calculate the Date Difference Between Consecutive Rows in 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, ...)는 일수 차이를 계산합니다. 다음 행이 없는 행은 NULLNextDate에 대해 DateDifference 값을 갖습니다. DATEDIFF의 첫 번째 인수는 차이 단위(여기서는 '일')를 지정합니다. 필요에 따라 조정합니다(예: '월', '연도').

위 내용은 SQL에서 연속 행 간의 날짜 차이를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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