SQL LAG() 함수 현재 행 앞에 오는 지정된 물리적 오프셋에서 행에 대한 액세스를 제공하는 창 함수입니다. .
SQL Server의 LAG 기능 에 사용된다 현재 행 값을 이전 행의 값과 비교합니다.
통사론
그만큼 LAG 함수 구문 이다:
.LAG (스칼라 표현식 [, 오프셋 [, 기본값 ]]) OVER ( [ partition_by_clause ] order_by_clause )
어디 :
- 스칼라 표현 – 지정된 오프셋을 기반으로 반환할 값입니다.
- 오프셋 – 값을 얻으려는 현재 행 이후의 행 수입니다. 지정하지 않으면 기본값은 1입니다.
- 기본 - 기본값은 오프셋이 파티션 범위를 벗어나는 경우 반환되는 값입니다. 기본값을 지정하지 않으면 NULL이 반환됩니다.
- partition_by_clause: 결과 집합을 파티션으로 나누는 선택적 절입니다. LAG() 함수는 각 파티션에 별도로 적용됩니다.
- 주문_별_절: 각 파티션 내의 행 순서입니다. 이는 필수이며 지정해야 합니다.
SQL LAG() 함수 예
SQL LAG 함수의 몇 가지 예를 살펴보고 SQL Server에서 LAG 함수를 사용하는 방법을 이해해 보겠습니다.
실시예 1
SELECT Organisation, [Year], Revenue, LAG (Revenue, 1, 0) OVER ( PARTITION BY Organisation ORDER BY [Year]) AS PrevYearRevenue FROM Org ORDER BY Organisation, [Year];>
산출:
| 조직 | 년도 | 수익 | 이전연도수익 |
|---|---|---|---|
| ABCD 뉴스 | 2013년 | 440000 | 0 |
| ABCD 뉴스 | 2014년 | 480000 | 440000 |
| ABCD 뉴스 | 2015년 | 490000 | 480000 |
| ABCD 뉴스 | 2016년 | 500000 | 490000 |
| ABCD 뉴스 | 2017년 | 520000 | 500000 |
| ABCD 뉴스 | 2018 | 525000 | 520000 |
| ABCD 뉴스 | 2019 | 540000 | 525000 |
| ABCD 뉴스 | 2020 | 550000 | 540000 |
| Z뉴스 | 2016년 | 720000 | 0 |
| Z 뉴스 | 2017년 | 750000 | 720000 |
| Z뉴스 | 2018 | 780000 | 750000 |
| Z뉴스 | 2019 | 880000 | 780000 |
| Z뉴스 | 2020 | 910000 | 880000 |
위의 예에는 LAG() 함수를 사용하여 올해 및 전년도 수익이 같은 행에 표시되는 2개의 TV 뉴스 채널이 있습니다. 보시다시피 각 TV 뉴스 채널의 첫 번째 레코드에는 전년도 수익이 없으므로 기본값 0이 표시됩니다. 이 기능은 값을 비교하려는 경우 BI 보고서용 데이터를 생성하는 데 매우 유용할 수 있습니다. 연속적인 기간으로, 예를 들어 연도별 또는 분기별 또는 일일 비교.
실시예 2
SELECT Z.*, (Z.Revenue - z.PrevYearRevenue) as YearonYearGrowth FROM (SELECT Organisation, [Year], Revenue, LAG (Revenue, 1) OVER ( PARTITION BY Organisation ORDER BY [Year] ) AS PrevYearRevenue FROM Org) Z ORDER BY Organisation, [Year];>
산출:
| 조직 | 년도 | 수익 | 이전연도수익 | 연도별성장 |
|---|---|---|---|---|
| ABCD 뉴스 | 2013년 | 440000 | 없는 | 없는 |
| ABCD 뉴스 | 2014년 | 480000 | 440000 | 40000 |
| ABCD 뉴스 | 2015년 | 490000 | 480000 | 10000 |
| ABCD 뉴스 | 2016년 | 500000 | 490000 | 10000 |
| ABCD 뉴스 | 2017년 | 520000 | 500000 | 20000 |
| ABCD 뉴스 | 2018 | 525000 | 520000 | 5000 |
| ABCD 뉴스 | 2019 | 540000 | 525000 | 15000 |
| ABCD 뉴스 | 2020 | 550000 | 540000 | 10000 |
| Z뉴스 | 2016년 | 720000 | 없는 | 없는 |
| Z뉴스 | 2017년 | 750000 | 720000 | 30000 |
| Z뉴스 | 2018 | 780000 | 750000 | 30000 |
| Z뉴스 | 2019 | 880000 | 780000 | 100000 |
| Z 뉴스 | 2020 | 910000 | 880000 | 30000 |
위의 예에서 TV 뉴스 채널의 전년 대비 성장률을 유사하게 계산할 수 있습니다. 또한 이 예에서 주목해야 할 점은 LAG()에 기본 매개변수를 제공하지 않았기 때문에 이전 값이 없는 경우 LAG() 함수가 NULL을 반환한다는 것입니다. LAG() 함수는 데이터베이스 수준에서 구현될 수 있으며 Power BI 및 Tableau와 같은 BI 보고 솔루션은 보고 계층에서 번거로운 측정값을 사용하지 않아도 됩니다.
SQL LAG() 함수에 대한 중요 사항
- SQL LAG() 함수는 사용자가 데이터 세트의 이전 행에 있는 데이터에 액세스할 수 있게 해주는 창 함수입니다.
- 이를 통해 사용자는 현재 행 값을 이전 행의 값, 특히 시간 또는 특정 열과 관련된 값과 비교할 수 있습니다.
- LAG() 함수는 주식 시장 데이터, 일일 추세, 여러 열의 변경 사항 등 시간에 따른 변화를 분석하는 데 유용합니다.