SQL統計関数


スケーラブルなデータベース内SQL統計関数

概要

すべてのOracle Databaseには、SQL経由でアクセス可能な一連の基本統計関数が搭載されています。この統計関数には、記述統計、仮説検定、相関分析、分布適合度検定、カイ二乗統計のクロス集計、分散分析(ANOVA)が含まれます。基本統計関数はSQL関数として実装され、Oracle Databaseの強力な機能全体を活用しています。SQL統計関数はOracleの表とビューに対して機能し、データベースのパラレル処理、スケーラビリティ、ユーザー権限、セキュリティ・スキームのすべてを利用します。そのため、SQL統計関数は、SQL問合せやBIダッシュボード内に含めて公開したり、リアルタイムのアプリケーション内に埋め込むことができます。    SQL統計関数はさまざまな方法で利用できます。たとえば、Oracle SQL統計関数を呼び出して、データの平均値、最大値、最小値、中央値、最頻値、標準偏差に関する情報を取得できます。また、属性間の相関を測定したり、t検定、F検定、分散分析などの仮説検定統計を利用して関係の強さを測定したりできます。SQL集計関数は単一行ではなく行のグループに基づいて単一の結果行を返しますが、それに対してSQL分析関数は行のグループに基づいて集計値を計算します。

SQL統計関数には次の関数が含まれます。 

STATS_T_TEST_INDEPUの例:次の例では、各分布の分散に有意差がある(非併合分散)考えられている、男性と女性に対する平均売上間の差の有意性を判断します。

SELECT SUBSTR(cust_income_level, 1, 22) income_level,
    AVG(DECODE(cust_gender, 'M', amount_sold, null)) sold_to_men,
    AVG(DECODE(cust_gender, 'F', amount_sold, null)) sold_to_women,
    STATS_T_TEST_INDEPU(cust_gender, amount_sold, 'STATISTIC', 'F') t_observed,
    STATS_T_TEST_INDEPU(cust_gender, amount_sold) two_sided_p_value
  FROM sh.customers c, sh.sales s WHERE c.cust_id = s.cust_id
  GROUP BY ROLLUP(cust_income_level)
  ORDER BY income_level, sold_to_men, sold_to_women, t_observed;

INCOME_LEVEL           SOLD_TO_MEN SOLD_TO_WOMEN T_OBSERVED TWO_SIDED_P_VALUE
---------------------- ----------- ------------- ---------- -----------------
A:Below 30,000          105.28349    99.4281447 -2.0542592        .039964704
B:30,000 - 49,999       102.59651    109.829642 2.96922332        .002987742
C:50,000 - 69,999      105.627588    110.127931  2.3496854        .018792277
D:70,000 - 89,999      106.630299    110.47287  2.26839281        .023307831
E:90,000 - 109,999     103.396741    101.610416 -1.2603509        .207545662
F:110,000 - 129,999     106.76476    105.981312 -.60580011        .544648553
G:130,000 - 149,999    108.877532    107.31377  -.85219781        .394107755
H:150,000 - 169,999    110.987258    107.152191 -1.9451486        .051762624
I:170,000 - 189,999    102.808238    107.43556  2.14966921        .031587875
J:190,000 - 249,999    108.040564    115.343356 2.54749867        .010854966
K:250,000 - 299,999    112.377993    108.196097 -1.4115514        .158091676
L:300,000 and above    120.970235    112.216342 -2.0726194        .038225611
                        107.121845    113.80441  .689462437        .490595765
                        106.663769    107.276386 1.07853782        .280794207
14 rows selected.



(STATS_T_TEST_*については、下記のSQL言語リファレンスへのリンクを参照)


ほとんどの統計ソフトウェア・ベンダーはこれらの統計機能についてライセンス料金を請求しています。これらの統計機能がすべてのOracle Databaseに搭載されています。ユーザーは、年間のライセンス料金を削減しつつ同等の基本統計機能を実行でき、さらに、ビッグ・データや分析を、一貫したスケーラブルでセキュアな単一のOracle Database統合プラットフォーム内で簡単に維持できます。統計関数はネイティブなSQL関数であるため、Oracleスタックで統計結果をすぐに使用できます。このため、自然発生的な方法や予期しない方法で統計結果を活用するさらに多くの機会が提供されます。

また、Oracle Advanced AnalyticsOracle R Enterpriseコンポーネントは、統計用Rプログラミング言語によってSQL統計関数を公開しており、RユーザーはSummaryなどのRの統計関数を使用しながら、R関数の処理を同等のSQL統計関数に任せることができます。そのため、データを移動させずに、データベース内での大幅なパフォーマンス向上を実現できます。SQL Developer Oracle Data MinerワークフローGUI拡張でも、Explore、Graph、SQL Query、Transformの各ノードでSQL統計関数を利用しています。


技術情報