極めよう! 分析関数によるSQL高速化計画SQLクリニック(8)(1/3 ページ)

» 2005年09月27日 00時00分 公開
[中島益次郎株式会社インサイトテクノロジー]

本連載はSQLの応用力を身に付けたいエンジニア向けに、さまざまなテクニックを紹介する。SQLの基本構文は平易なものだが、実務で活用するには教科書的な記述を理解するだけでは不十分だ。本連載は、著名なメールマガジン「おら!オラ! Oracle - どっぷり検証生活」を発行するインサイトテクノロジーのコンサルタントを執筆陣に迎え、SQLのセンス向上に役立つ大技小技を紹介していく。(編集局)

 今回はOracle8i(リリース8.1.6)から実装されている分析関数について解説します。分析機能を理解しておくと、いままでは副問い合わせや複数回に分けていた問い合わせを1回のSQL文で簡単に行えるようになります。

分析関数の基本を理解しよう

 まず、分析関数とは、どのような関数であるのかを簡単に説明しておきましょう。

  1. 集計関数と分析関数の違いは?
  2. 分析関数は、どのように処理されるの?
  3. 分析関数は、どのような分析ができるの?
  4. 分析関数のメリットは?

1.集計関数と分析関数の違いは?

 集計関数は、集合(指定されたグループ全体)に基づく単一結果行を戻します。これに対して、分析関数は集合内の指定された範囲で集計を行った結果を戻します。ちょっと難しいので、図1で理解してください。

図1 集計関数と分析関数の違い 図1 集計関数と分析関数の違い

2.分析関数は、どのように処理されるの?

 図1を見て理解できた方は、分析関数がどのように処理されるのか、ピンときていると思います。

 <分析関数の処理順序>

  1. 結合処理(表を結合する必要がある場合)、WHERE句、GROUP BY句、HAVING句の実行
  2. 1で実行された結果セットをグループに分割、各グループの各行で計算を実行
  3. ORDER BY句が存在する場合、適切な出力順序処理を実行
図2 分析関数の処理順序 図2 分析関数の処理順序

3.分析関数は、どのような分析ができるの?

 分析関数は、その機能によって以下のカテゴリに分類できます。

カテゴリ 使用例
ランク付け関数群 結果セットのグループのランキングを計算する
ウィンドウ関数群 累積集計を計算する
レポート関数群 市場占有率などのシェアを計算する
ラグ/リード関数群 前月との比較を計算する
線形回帰関数群 統計情報(傾き、切片など)を計算する
表1 分析関数の機能カテゴリと使用例

4.分析関数のメリットは?

 分析関数が提供する主なメリットは、以下です。

  1. 問い合わせ速度の向上
    分析を行うために、以前は内部結合や複雑な処理手続きが必要であった。分析関数により、簡素なSQL文で記述することが可能となり、処理パフォーマンスも向上できる
  2. 開発作業の効率化
    明快で簡潔なSQL文で、複雑な分析処理の記述が可能となる

 それでは、次ページで実際の使用方法を見ていきましょう。(次ページへ続く)

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。