oracle SQL sample 隨機抽樣查詢

2021-06-26 20:56:31 字數 959 閱讀 9461

建立測試表

sql> create table t1 (x int);

table created.

插入10000行資料

sql> begin

2  for i in 1..10000 loop

3  insert into t1 values (i);

4  end loop;

5  end;

6  /

pl/sql procedure successfully completed.

收集表的統計資訊

sql> analyze table t1 compute statistics;

table analyzed.

檢視表中高水位以下的塊的數量

sql> select blocks from user_tables where table_name='t1';

blocks

----------

20sql> select count(*) from t1;

count(*)

----------

10000

隨機抽取表中10%的資料

sql> select count(*) from t1 sample (10);

count(*)

----------

965sql> select count(*) from t1 sample (10);

count(*)

----------

1024

sql> select count(*) from t1 sample (10);

count(*)

----------

981sql> select count(*) from t1 sample (10);

count(*)

----------

每次取樣差不多為1000行左右

mR 隨機抽樣

1.問題由來 google曾經有一道非常經典的面試題 給你乙個長度為n的鍊錶。n很大,但你不知道n有多大。你的任務是從這n個元素中隨機取出k個元素。你只能遍歷這個鍊錶一次。你的演算法必須保證取出的元素恰好有k個,且它們是完全隨機的 出現概率均等 這道題的解法非常多,網上討論也非常熱烈。本文要討論的是...

MySQL隨機抽樣

最近由於需要大概研究了一下mysql的隨機抽取實現方法。舉個例子,要從tablename表中隨機提取一條記錄,大家一般的寫法就是 select from tablename order by rand limit 1。但是,後來我查了一下mysql的官方手冊,裡面針對rand 的提示大概意思就是,在...

R隨機抽樣

x為總體向量 n為樣本容量 replace f表示無放回抽樣 replace t表示放回抽樣 prob可以設定不等概率抽樣 sample x,n,replace f,prob null 用r模擬擲硬幣 h表示正面 t表示反面 有放回抽樣 sample c h t 10,replace t 1 h t...