집 >데이터 베이스 >MySQL 튜토리얼 >SQL을 사용하여 데이터베이스 테이블의 연속 행 간의 값 차이를 계산하는 방법은 무엇입니까?
SQL을 사용하여 데이터베이스 테이블의 연속 행 간의 차이 계산
행 식별자(rowInt
)와 숫자 값(Value
)이 비순차적 정수인 데이터베이스 테이블이 있다고 가정해 보겠습니다. 문제는 SQL을 사용하여 연속된 행의 Value
차이를 효율적으로 계산하는 것입니다.
다음과 같은 간단한 쿼리로 데이터를 검색합니다.
<code class="language-sql">SELECT * FROM myTable ORDER BY rowInt;</code>
그러나 차이를 계산하고 표시해야 합니다. 원하는 출력 형식은 다음과 같습니다.
<code>rowInt Value Diff 2 23 22 --45-23 3 45 -35 --10-45 9 10 -45 --0-45 17 0 0 --0 (or NULL, depending on desired behavior)</code>
하위 쿼리가 포함된 셀프 조인을 사용하여 이를 달성하는 방법은 다음과 같습니다.
<code class="language-sql">SELECT c.rowInt, c.Value, ISNULL(n.Value, 0) - c.Value AS Diff FROM myTable AS c LEFT JOIN myTable AS n ON n.rowInt = (SELECT MIN(rowInt) FROM myTable WHERE rowInt > c.rowInt) ORDER BY c.rowInt;</code>
이 쿼리는 LEFT JOIN
(현재) 및 myTable
(다음)이라는 별칭으로 테이블(c
)의 n
을 자체적으로 수행합니다. ON
절 내의 하위 쿼리는 현재 행의 rowInt
보다 큰 최소 rowInt
를 찾아 다음 행을 효과적으로 식별합니다. ISNULL(n.Value, 0)
은 다음 행(마지막 행)이 없는 경우를 처리하며 누락된 n.Value
을 0으로 대체합니다. 그런 다음 차이가 계산되어 Diff
으로 별칭이 지정됩니다. 마지막 ORDER BY
절은 결과가 올바른 순서로 표시되도록 보장합니다. 또는 COALESCE
대신 ISNULL
을 사용할 수도 있습니다. 선택은 특정 데이터베이스 시스템에 따라 다릅니다.
위 내용은 SQL을 사용하여 데이터베이스 테이블의 연속 행 간의 값 차이를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!