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