code

두 행 간의 시간 차이 계산

starcafe 2023. 6. 27. 22:26
반응형

두 행 간의 시간 차이 계산

다음이 포함된 테이블이 있습니다.

DataDate                 Value
2010-03-01 08:31:32.000  100
2010-03-01 08:31:40.000  110
2010-03-01 08:31:42.000  95
2010-03-01 08:31:45.000  101
.                        .
.                        .
.                        .

값 열에 현재 행과 이전 행 간의 시간 차이를 곱하고 전체 하루 동안의 시간을 합해야 합니다.

현재 데이터가 10초마다 들어오도록 설정되어 있으므로 쿼리에서 간단히 변환할 수 있습니다.

SELECT Sum((Value/6) FROM History WHERE DataDate BETWEEN @startDate and @endDate

여기서 @startDate 및 @endDate는 오늘의 날짜 00:00:00 및 11:59:59입니다.

10초마다 데이터를 수집하도록 설정하기 전에는 값이 변경될 때마다 데이터가 수집되었습니다.중복된 시간은 없고 최소 1초 차이입니다.

판독치 사이의 시간 간격을 알 수 없는 경우 행 사이의 경과 시간을 가져오기 위해 쿼리를 설정하려면 어떻게 해야 합니까?

SQL Server 2005를 사용하고 있습니다.

WITH    rows AS
        (
        SELECT  *, ROW_NUMBER() OVER (ORDER BY DataDate) AS rn
        FROM    mytable
        )
SELECT  DATEDIFF(second, mc.DataDate, mp.DataDate)
FROM    rows mc
JOIN    rows mp
ON      mc.rn = mp.rn - 1

SQL Server 2012+의 경우:

SELECT  DATEDIFF(second, pDataDate, dataDate)
FROM    (
        SELECT  *,
                LAG(dataDate) OVER (ORDER BY dataDate) pDataDate
        FROM    rows
        ) q
WHERE   pDataDate IS NOT NULL

서브셀렉트를 사용하지 않으려는 경우 Quassnoi의 쿼리를 약간 수정하면 다음과 같습니다.

SELECT
      DATEDIFF(second, LAG(dataDate) OVER (ORDER BY dataDate), dataDate)
FROM  rows
WHERE LAG(dataDate) OVER (ORDER BY dataDate) IS NOT NULL

언급URL : https://stackoverflow.com/questions/2357515/calculate-time-difference-between-two-rows

반응형