
第 1 章 データベース・テーブルからのデータの選択
分析データの取得
ここでは、分析情報を返すクエリを構築する方法について説明します。統計関 数には、ランク付けと逆分散統計の 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 とは異なります。
パフォーマンス&チューニング・ガイド | 17 |