logo

SQL LAG() 함수

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() 함수는 주식 시장 데이터, 일일 추세, 여러 열의 변경 사항 등 시간에 따른 변화를 분석하는 데 유용합니다.