logo

Функція SQL LAG().

Функція SQL LAG(). це віконна функція, яка надає доступ до рядка за вказаним фізичним зсувом, який стоїть перед поточним рядком .

Функція LAG у SQL Server звик порівняти значення поточного рядка зі значеннями попереднього рядка.



що таке сплячий режим в java

Синтаксис

The Синтаксис функції LAG це:

.LAG (скалярний вираз [, зміщення [, за замовчуванням ]]) OVER ( [ partition_by_clause ] order_by_clause )

Де :



  • скалярний_вираз – Значення, яке буде повернуто на основі вказаного зсуву.
  • зміщення – Кількість рядків назад від поточного рядка, з якого потрібно отримати значення. Якщо не вказано, за умовчанням дорівнює 1.
  • за замовчуванням – за замовчуванням — це значення, яке повертається, якщо зміщення виходить за межі розділу. Якщо значення за замовчуванням не вказано, повертається NULL.
  • partition_by_clause: Необов'язкове речення, яке розділяє набір результатів на розділи. Функція LAG() застосовується до кожного розділу окремо.
  • order_by_clause: Порядок рядків у кожній секції. Це обов’язково і має бути зазначено.

Приклад функції SQL LAG().

Давайте розглянемо деякі приклади функції SQL LAG і зрозуміємо, як використовувати функцію LAG у SQL Server.

Приклад 1

  SELECT   Organisation, [Year], Revenue,   LAG   (Revenue, 1, 0)    OVER   (  PARTITION BY   Organisation   ORDER BY   [Year])   AS   PrevYearRevenue    FROM   Org    ORDER BY   Organisation, [Year];>

Вихід:

організація рік Дохід PrevYearRevenue
Новини 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

У наведеному вище прикладі ми маємо 2 канали телевізійних новин, чий дохід за поточний і попередній роки представлено в одному рядку за допомогою функції LAG(). Як ви бачите, найперший запис для кожного каналу телевізійних новин не має доходів за попередній рік, тому він показує значення за замовчуванням 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];>

Вихід:

мій фліксер
організація рік Дохід PrevYearRevenue Річний ріст
Новини 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

У наведеному вище прикладі ми можемо аналогічно обчислити річне зростання для каналу телевізійних новин. Крім того, одна річ, яку слід зауважити в цьому прикладі, полягає в тому, що ми не надали жодного параметра за замовчуванням для LAG(), і, отже, функція LAG() повертає NULL, якщо немає попередніх значень. Функцію LAG() можна реалізувати на рівні бази даних, а рішення BI Reporting, такі як Power BI і Tableau, можуть уникнути використання громіздких заходів на рівні звітності.

Важливі моменти про функцію SQL LAG().

  • Функція SQL LAG() — це віконна функція, яка дозволяє користувачам отримувати доступ до даних із попередніх рядків у наборі даних.
  • Це дозволяє користувачам порівнювати значення поточного рядка зі значеннями з попередніх рядків, особливо тих, що стосуються часу або певних стовпців.
  • Функція LAG() корисна для аналізу змін із плином часу, таких як дані фондового ринку, щоденні тенденції та зміни в кількох стовпцях.