logo

SQL LAG() 関数

SQL LAG() 関数 現在の行の前にある、指定された物理オフセットにある行へのアクセスを提供するウィンドウ関数です。

SQL ServerのLAG関数 に慣れている 現在の行の値と前の行の値を比較します。



スレッド.デストロイ

構文

LAG 関数の構文 は:

.LAG (スカラー式 [, オフセット [, デフォルト ]]) OVER ( [partition_by_clause ] order_by_clause )

どこ :



  • スカラー式 – 指定されたオフセットに基づいて返される値。
  • オフセット – 値を取得する現在の行から遡る行数。指定しない場合、デフォルトは 1 です。
  • デフォルト - デフォルトは、オフセットがパーティションの範囲を超えた場合に返される値です。デフォルト値が指定されていない場合は、NULL が返されます。
  • 句によるパーティション: 結果セットをパーティションに分割するオプションの句。 LAG() 関数は各パーティションに個別に適用されます。
  • order_by_clause: 各パーティション内の行の順序。これは必須であり、指定する必要があります。

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
ニュース 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];>

出力:

int 文字列 Java
組織 収益 前年収益 年々の成長
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 ニュース チャンネルの前年比成長率を計算できます。また、この例で注意すべき点の 1 つは、LAG() にデフォルトのパラメーターを指定していないため、以前の値がない場合には LAG() 関数は NULL を返すということです。 LAG() 関数はデータベース レベルで実装でき、Power BI や Tableau などの BI レポート ソリューションでは、レポート レイヤーでの面倒な手段の使用を回避できます。

SQL LAG() 関数に関する重要なポイント

  • SQL LAG() 関数は、ユーザーがデータセット内の以前の行のデータにアクセスできるようにするウィンドウ関数です。
  • これにより、ユーザーは現在の行の値と前の行の値、特に時間や特定の列に関連する値を比較できます。
  • LAG() 関数は、株式市場データ、日々の傾向、複数の列の変更など、時間の経過に伴う変化を分析するのに役立ちます。