【SQL Server】知っていると便利な関数

初めまして。12月に入社したエンジニアの尾里です。

今回は実務を通して学んだ、頭の片隅に置いておくと便利かもしれない関数を2つ紹介したいと思います。





RANK関数

RANK関数とはSQLで取得したデータに順位をつけて返す関数の事です。番号は1から順に振られ、同順位のデータに対しては同じ番号をつけます。

早速、RANK関数を使っていきましょう。

左のような売上テーブルから、カテゴリーごとに販売数量順に並び替えます。
ここで販売数量が同じ場合は顧客IDの昇順、さらに同じ場合は売上年月日順にし右のような売上テーブルを作成していきます。

まずRANK関数は以下の書式で使用します。
RANK() OVER( [PARTITION BY ~] ORDER BY ~)

書式に当てはめてみましょう。
RANK() OVER( PARTITION BY カテゴリー ORDER BY 販売数量 DESC, 顧客ID, 売上年月日)

LAG・LEAD関数

LAG関数は前の行を持ってくる関数、LEAD関数は後ろの行を持ってくる関数です。

それでは続いて、LAG関数・LEAD関数を使っていきましょう。

LAG関数を例にとって説明していきます。販売数量をもとに一番右のような”前日の販売数量”を出力していきましょう。

まず、LAG関数は以下の書式で使用します。
LAG (該当カラム, n個前) OVER( [PARTITION BY ~] ORDER BY ~ )

書式に当てはめてみましょう。
LAG(販売数量, 1) OVER ( ORDER BY 日付 )
これで1日前の販売数量が取得できます。

LEAD関数も同様に、以下の書式で使用します。
LEAD(該当カラム, n個後) OVER( [PARTITION BY ~] ORDER BY ~ )

おわりに

いかがでしたでしょうか?

データ量など使いどころによっては、かえってパフォーマンスが悪くなる場合もあるかもしれませんが、基本的にはパフォーマンスの向上にもつながりますし、様々な集計が容易になり使いこなせるととても便利だと思います。

ぜひ頭の片隅に置いてみると良いかもしれません!

関連記事

プロジェクトストーリー

おすすめ記事

技術

コメント

この記事へのコメントはありません。

カテゴリー

TOP
TOP