SQL 테이블의 행 값 차이를 효율적으로 계산
이 가이드에서는 비순차적 테이블 구조에 초점을 맞춰 SQL 테이블 내에서 연속된 행 값 간의 차이를 계산하는 두 가지 방법을 보여줍니다. 첫 번째 방법은 모든 SQL 버전에 적합한 반면, 두 번째 방법은 SQL Server 2012 이상에서 성능 향상을 위해 윈도우 기능을 활용합니다.
방법 1: Self-Join(모든 SQL 버전)
이 접근 방식은 LEFT JOIN
을 사용하여 행 식별자(이 예에서는 rowInt
)를 기반으로 각 행을 후속 행과 비교합니다.
<code class="language-sql">SELECT current.rowInt, current.Value, ISNULL(next.Value, 0) - current.Value AS ValueDifference FROM sourceTable AS current LEFT JOIN sourceTable AS next ON next.rowInt = (SELECT MIN(rowInt) FROM sourceTable WHERE rowInt > current.rowInt)</code>
ISNULL
함수는 행에 후속 항목이 없는 경우(마지막 행)를 처리하고 NULL
값을 피하기 위해 차이 0을 할당합니다.
방법 2: LEAD() 창 함수(SQL Server 2012 이상)
최신 SQL Server 버전의 효율성 향상을 위해 LEAD()
창 기능은 더욱 간소화된 솔루션을 제공합니다.
<code class="language-sql">SELECT RowInt, Value, LEAD(Value, 1, 0) OVER (ORDER BY RowInt) - Value AS ValueDifference FROM sourceTable</code>
LEAD(Value, 1, 0)
은 다음 행(오프셋 1)에서 값을 검색하며, 다음 행이 없으면 기본값은 0입니다. 이는 차이를 직접 계산하므로 자체 조인이 필요하지 않습니다. 일반적으로 이 방법이 더 빠르고 읽기 쉽습니다.
위 내용은 SQL 테이블에서 행 값 차이를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!