SlideShare a Scribd company logo
SQLSERVER Window関数
開催日:2018/9/29
主催:Japan SQL Server User Group
作成:柳 大介
・抽出された結果に対してさらに処理を行う関数
・つまりWindowとは抽出結果のこと。
Window関数とは?
Window関数の構文ルール
・SELECT句にしか使用できない。
・関数の後にOVERがセットでつく。
▼OVERとは
・partition byとorder by、Range(Row)が指定できる。
・partition byは処理する単位の区切り項目
・order byは処理単位ごとのソート項目
・Rangeは、パーティション毎に、さらに範囲の制限をかけること
ができる。
OVER例
・row_numberを例にする。
・partition byにSEX、order byもBIRTH DESCを指定する。
・SEX毎にBIRTHの降順で連番が振られる。
Window関数の種類
・順位付け関数
・分析関数
・集計関数(OVER付き)
・ROW_NUMBER
・RANK
・DENSE_RANK
・NTILE
順位付け関数
・1からの連番を返す。
ROW_NUMBER【順位付け】
【構文】
ROW_NUMBER ( )
OVER (・・・)
・1からの順位を返す。
・同一データの場合は、同じ順位となる。
・同じ順位の後は、ギャップを加味。例: 1、2、2、4、5
RANK 【順位付け】
【構文】
RANK ( )
OVER (・・・)
・1からの順位を返す。
・同一データの場合は、同じ順位となる。
・同じ順位の後は、ギャップを加味しない。例: 1、2、2、3、4
DENSE_RANK 【順位付け】
【構文】
DENSE_RANK ( )
OVER (・・・)
・指定した値の数だけグループ分けする。
・グループは1からの連番。
・割り切れない場合は、小さい数値から行を加算。
NTILE 【順位付け】
【構文】
NTILE ( int )
OVER (・・・)
9行のデータを
5分割
・LAG
・LEAD
・FIRST_VALUE
・LAST_VALUE
・CUME_DIST
・PERCENTILE_CONT
・PERCENTILE_DISC
・PERCENT_RANK
分析関数
・自分の行から○行前方の指定列情報を取得する。
・自分の行と、前方行の比較に使用できる。
LAG【分析】
【構文】
LAG (取得列
,参照先行数※既定値1
,初期値 ※既定値null)
OVER (・・・) 前方にデータがないのでnull
一つ上のBIRTHを取得
・自分の行から○行後方の指定列情報を取得する。
・自分の行と、後方行の比較に使用できる。
・LAGの逆
LEAD 【分析】
【構文】
LEAD (取得列
,参照先行数※既定値1
,初期値 ※既定値null)
OVER (・・・)
後方にデータがないのでnull
一つ下のBIRTHを取得
・自分が該当するパーティショングループ内の、最初の行の指定
列情報を取得する。
FIRST_VALUE 【分析】
【構文】
FIRST_VALUE(取得列)
OVER (・・・)
・自分が該当するパーティショングループ内の、最後の行の指定列情報を
取得する。
・ここでのパーティションは、Partition by + ORDER BYで指定した列となる。
LAST_VALUE 【分析】
【構文】
LAST_VALUE(取得列)
OVER (・・・)
ORDER BYは
最終行を決める並
び替えではない。
・自分が該当するパーティショングループ内の、累積分布を取得
する。
CUME_DIST 【分析】
【構文】
CUME_DIST()
OVER (・・・)
・PERCENTILE_CONT ⇒ 連続型分散に基づく百分位数
・PERCENTILE_DISC ⇒ 離散型分布に基づく百分位数
・PERCENT_RANK ⇒ 相対的な順位
その他 【分析】
詳しくはココ!!
https://docs.microsoft.com/ja-jp/sql/t-sql/functions/analytic-functions-
transact-sql?view=sql-server-2017
・集計関数は、GROUP BYを指定し、集約した値を計算する関数。
・また、指定列以外は集計関数をかまさないと表示できない。
・OVERを指定すると、Window関数扱いになり集約されない。
・GROUP BYがなくても各列に対して値を表示することができる。
集計関数(OVER付き)
・グループ毎に集約し、自分が該当するグループ内の、指定列
の最大値を取得する。
MAX (通常)【集計】
【構文】
MAX(取得列)
GROUP BY 取得列
集約された中の最大値
・自分が該当するパーティショングループ内の、指定列の最大値
を取得する。
MAX(OVER付き) 【集計】
【構文】
MAX(取得列)
OVER (・・・)
ご清聴ありがとうございました。

More Related Content

PDF
Ruby on JavaScript
PPTX
Procedure、function create hanson
PPTX
Lt second
PPTX
Recommend parameter query
PDF
2024 Trend Updates: What Really Works In SEO & Content Marketing
PDF
Storytelling For The Web: Integrate Storytelling in your Design Process
PDF
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
PDF
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
Ruby on JavaScript
Procedure、function create hanson
Lt second
Recommend parameter query
2024 Trend Updates: What Really Works In SEO & Content Marketing
Storytelling For The Web: Integrate Storytelling in your Design Process
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
Ad

Sqlserver window function