我們有這個資料:表 R(A,..) 具有屬性 A,R 的 nbLine 是 1000,A 的不同值是 500。
data are displayed like this : bucket -> end_point_value.
1 -> 800
2 -> 900
3 -> 1000
4 -> 1200
5 -> 1500
6 -> 2000
7 -> 2300
8 -> 2400
9 -> 2550
10 -> 2590
問題是:這個直方圖是證實還是否定了均勻分布的假設?
我想我不能確認也不能否認,你怎么看?
uj5u.com熱心網友回復:
首先,您必須問,列上定義了哪種直方圖型別。
Oracle 提供了四種不同的直方圖型別,如果您想宣告均勻分布,則frequency必須定義直方圖。
頻率直方圖對于每個不同的值都有一個桶(存盤在列中ENDPOINT_VALUE,頻率是(相加)存盤在列中ENDPOINT_NUMBER)
因此,如果您的直方圖只有 10 個桶(如資料中所示),那么您已準備就緒,并且您對分布無話可說。
均勻分布示例
create table r as
select
1 trunc((rownum-1)/2) A
from dual connect by level <= 1000;
select count(*), count(distinct a), min(a), max(a) from r;
COUNT(*) COUNT(DISTINCTA) MIN(A) MAX(A)
---------- ---------------- ---------- ----------
1000 500 1 500
使用 500 個桶創建頻率直方圖
exec dbms_stats.gather_table_stats(ownname=>user, tabname=>'R', method_opt=>'for all columns size 500');
select NUM_BUCKETS, HISTOGRAM from user_tab_columns where table_name = 'R';
NUM_BUCKETS HISTOGRAM
----------- ---------------
500 FREQUENCY
select ENDPOINT_VALUE, ENDPOINT_NUMBER from user_histograms where table_name = 'R' order by ENDPOINT_VALUE;
ENDPOINT_VALUE, ENDPOINT_NUMBER
1 2
2 4
3 6
4 8
...
498 996
499 998
500 1000
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/373073.html
