![]()
SQLクリニック(9) Page
2/2SQL分析関数をさらに深く追求してみよう
株式会社インサイトテクノロジー
中島 益次郎
2005/10/29
次はレポート関数を利用して、分析してみましょう。レポート関数を使用して、総売り上げに対する各店舗の売り上げ比率やマーケットシェアの計算などを行うことができます。
今回は、レポート関数を簡単に理解してもらうために、RATIO_TO_REPORT関数を例に説明します。RATIO_TO_REPORT関数は、グループ(値の集合)の合計に対する値(各行)の割合を計算します。構文は、以下になります。
構文 |
RATIO_TO_REPORT ( expr ) OVER ( [query_partition_clause] ) |
では、実際にRATIO_TO_REPORT関数を使用して分析してみます。ここでもSCOTTユーザーが所有するEMP表を使ってやってみます(EMP表のスキーマ定義は前ページのリスト1を参照)。RATIO_TO_REPORT関数を使用して、全員の給料の合計に対する各従業員給料の割合を見てみましょう。
SQL> select ename, sal, sum(sal) over() as total_sal |
| リスト3 RATIO_TO_REPORT関数を使用した給与割合の分析 |
リスト3では分析対象のグループをEMP表全体とし、全員の給料の合計に対する各従業員給料の割合をRATIO_TO_REPORT関数を使用して分析してみました。
RATIO_TO_REPORT関数を使用して、いろいろな割合を求めてみましょう。次は、職種(JOB)ごとの給料合計に対する各従業員給料の割合を見てみましょう。
SQL> select job, ename, sal |
| リスト4 RATIO_TO_REPORT関数を使用した職種ごとの給与割合の分析 |
リスト4は分析対象のグループを職種(JOB)ごととし、各職種に属する従業員給料の割合を分析してみました。さらに、全従業員の給料合計に対する各職種(JOB)の給料合計の割合を見てみましょう(リスト5)。
SQL> select job, sum(sal) as job_total_sal |
| リスト5 RATIO_TO_REPORT関数を使用した職種の給与全体に対する割合の分析 |
このようにRATIO_TO_REPORT関数を使用して、さまざまな集合に対する各行の割合を求めることができることを理解してもらえたと思います。おさらいになりますが、前回に説明した分析関数が実行される手順に示したとおり、
- GROUP BY句で指定された処理を実行
- 分析関数の実行
- ORDER BY句で指定された処理を実行
の順で実行されていることが上の結果より理解できるでしょう。
◇
今回は、分析関数であるウィンドウ関数とレポート関数について説明を行いました。次回は、残りの分析関数について解説する予定です。この機会に実際に試して、さらに理解を深めてみてください。(次回に続く)
| 筆者プロフィール |
| 株式会社インサイトテクノロジー Oracleに特化した製品開発、コンサルティングを手掛けるエンジニア集団。中島 益次郎はパフォーマンスで悩めるユーザーのためにPerformance Insightの開発に全力を注ぎ込む熱き魂の開発者。 |
| 2/2 |
| Index | |
| 連載 SQLクリニック(9) SQL分析関数をさらに深く追求してみよう |
|
| Page 1 ・ウィンドウ関数を使った分析 |
|
| Page 2 ・レポート関数を利用した分析 |
|
| SQLクリニック |
TechTargetジャパン
- IBMが歴史を変える!? 新カテゴリの製品を発表 (2012/5/25)
IBMは新たな製品カテゴリとなる「PureSystems」を発表。DB2 10とビッグデータの関係、PureSytemsの斬新さはどこかに迫ります - クラウド時代のデータ処理を支える分散KVSの可能性 (2012/5/23)
現在、高速データ処理の主流はインメモリ型データ処理だが、別の方法として分散KVSが注目を集めている。今回は分散KVSについて話を聞いた - 複数の表からデータを取り出して表示させる(2) (2012/4/23)
前回はSQLの基本的な結合構文について説明しました。今回は、より複雑な自己結合や外部結合について説明します - SQL Server、OOWにIQ、盛りだくさんの4月 (2012/4/20)
オラクルオープンワールドが3年ぶりに東京で開催されたほか、SQL Server 2012が提供開始されるなど、今月は話題が盛りだくさんです
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
