ウィンドウ関数でサブクエリを回避する [SQL]
前置き
左の表から、右のデータを抽出するSQL。
サブクエリで別表をJOINしたりseqに対しEXISTSしたりという方法が思いつくが、
それだと同じテーブルを2回読み込みことになり、パフォーマンスが悪い。
ウィンドウ関数を使えば読み込みを1回で済ませることができ、可読性も向上する。
今回の例は、カテゴリ毎にシーケンス番号が最大のデータを抽出している。
この他にも、ウィンドウ関数は様々なシーンで活用できそう。
- 教科毎の最低・最高得点の抽出
- 月毎の最低・最高売上店舗の抽出
- 部門毎の最低・最高売上成績の抽出
- etc...