반응형
두 행 간의 시간 차이 계산
다음이 포함된 테이블이 있습니다.
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
반응형
'code' 카테고리의 다른 글
MongoDB에서 열의 가장 높은 값 가져오기 (0) | 2023.07.02 |
---|---|
openapi springboot generator jacksonno String-인수 생성자/공장 메서드에서 문자열 값을 역직렬화합니다. (0) | 2023.07.02 |
mongo 집계 쿼리에서 $project를 사용하여 필드를 최상위 문서로 반환할 수 있습니까? (0) | 2023.06.27 |
새로운 파이프 역추적 런타임 문제 해결 (0) | 2023.06.27 |
URL로 인코딩된 양식 데이터가 잘못되었습니다. (0) | 2023.06.27 |