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() 関数は、株式市場データ、日々の傾向、複数の列の変更など、時間の経過に伴う変化を分析するのに役立ちます。