User manual
第 1 章 データベース・テーブルからのデータの選択
パフォーマンス&チューニング・ガイド 17
分析データの取得
ここでは、分析情報を返すクエリを構築する方法について説明します。統計関
数には、ランク付けと逆分散統計の 2 種類があります。ランク付け統計関数
は、グループ内の項目をランク付けしたり、分散統計を計算したり、結果セッ
トを複数のグループに分割したりします。逆分散統計関数は、K- 理論パーセ
ンタイル値を返します。これは、ひとまとまりのデータの値として許容し得る
しきい値を決定する際に使用します。
ランク分析関数には、RANK、DENSE_RANK、PERCENT_RANK、NTILE が
あります。逆分散統計関数には、PERCENTILE_CONT と PERCENTILE_DISC
があります。
たとえば、自動車販売店の販売状況を調べたいとします。NTILE 関数で、各販
売店が販売した車の台数に基づいて、販売店を 4 つのグループに分類します。
ntile = 1 になっているのは、車の販売台数で上位 25% までのディーラです。
SELECT dealer_name, sales,
NTILE(4) OVER ( ORDER BY sales DESC )
FROM carSales;
dealer_name sales ntile
Boston 1000 1
Worcester 950 1
Providence 950 1
SF 940 1
Lowell 900 2
Seattle 900 2
Natick 870 2
New Haven 850 2
Portland 800 3
Houston 780 3
Hartford 780 3
Dublin 750 3
Austin 650 4
Dallas 640 4
Dover 600 4
販売台数で上位 10% の販売店を調べるには、この例の SELECT 文で NTILE(10)
を指定します。同様に、販売台数で 50% の販売店を調べるには、NTILE(2) を指
定します。
NTILE はクエリ結果を指定された数のバケットに分割し、バケット内の各ロー
にバケット番号を割り当てるランク分析関数です。結果セットは 10 個 ( 十分
位数 )、4 個 ( 四分位数 )、その他の数のグループに分割できます。
ランク分析関数では、OVER (ORDER BY) 句を指定する必要があります。
ORDER BY 句は、ランク付けを実行するパラメータと、各グループ内でロー
をソートする順序を指定します。この ORDER BY 句は、OVER 句の中だけで
使用されるもので、SELECT の ORDER BY とは異なります。