真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle如何隨機(jī)組行,oracle 隨機(jī)

在oracle中,如何從一張表中查詢一條隨機(jī)記錄

這幾天工作上的需要,要從一個(gè)比較大的表中隨機(jī)取出一條記錄,oracle 不像MS SQLSERVER那樣,直接用Select TOP 1 * From TABLE Order By NewID(),就能高效的隨機(jī)查出一條記錄。經(jīng)過一翻折騰,用一個(gè)有90萬條記錄的表t_id,只有一個(gè)gameid字段,該字段上沒有索引,表里就是從100000到999999一連串的數(shù)據(jù)記錄,進(jìn)行測試:

創(chuàng)新互聯(lián)不只是一家網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司;我們對營銷、技術(shù)、服務(wù)都有自己獨(dú)特見解,公司采取“創(chuàng)意+綜合+營銷”一體化的方式為您提供更專業(yè)的服務(wù)!我們經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關(guān)注我們的網(wǎng)站建設(shè)、成都做網(wǎng)站質(zhì)量和服務(wù)品質(zhì),在得到用戶滿意的同時(shí),也能得到同行業(yè)的專業(yè)認(rèn)可,能夠?yàn)樾袠I(yè)創(chuàng)新發(fā)展助力。未來將繼續(xù)專注于技術(shù)創(chuàng)新,服務(wù)升級,滿足企業(yè)一站式網(wǎng)絡(luò)營銷推廣需求,讓再小的品牌網(wǎng)站制作也能產(chǎn)生價(jià)值!

方法1.

采用rownum和dbms_random.value,平均用時(shí)5秒,這個(gè)效率確實(shí)是太低了,對于小表應(yīng)該還行,大表那就太不適合了。

declare

n_id number(6);

begin

SELECT gameid into n_id FROM(SELECT gameid FROM t_id T ORDER BY dbms_random.value()) WHERE ROWNUM=1;

dbms_output.put_line(to_char(n_id));

end;

/

方法2. 

采用oracle sample語法,設(shè)置隨機(jī)樣本是1%,結(jié)果用時(shí)0.01左右,速度是相當(dāng)快的,但是根據(jù)官網(wǎng)的說法,采用sample采集特性可能會(huì)產(chǎn)生不準(zhǔn)確的結(jié)果集,我在測試中是沒有碰到不正確的結(jié)果。但是有個(gè)問題,就是隨機(jī)的結(jié)果分布很不平均,結(jié)果幾乎都分內(nèi)存卡在100000-200000的記錄中。效率雖好,但并沒有達(dá)到很好的隨機(jī)效果,如果對于結(jié)果的要求不是很高的,這個(gè)方法是相當(dāng)不錯(cuò)的。

declare

n_id number(6);

begin

SELECT gameid into n_id FROM t_id SAMPLE (1) WHERE ROWNUM = 1;

dbms_output.put_line(to_char(n_id));

end;

/

方法3. 

采用minus語法,先隨機(jī)獲取一個(gè)在表總記錄數(shù)范圍內(nèi)的一個(gè)隨機(jī)數(shù),再通過rownum查詢兩個(gè)結(jié)果集只相差一條記錄,用minus相減留出事先隨機(jī)數(shù)的那條記錄,平均用時(shí)大概1秒,隨機(jī)數(shù)越小,查詢速度越快,當(dāng)隨機(jī)數(shù)是20000時(shí),用于0.016秒。該方法雖然

能得到很有隨機(jī)效果,但效率比較不上該方法2. 對效率要求一般的話, 還是可以考慮使用的。

declare

n_count int:=0;

n_rand_num int:=0;

n_id number(6);

begin

SELECT COUNT(*) INTO n_count FROM t_id;

SELECT trunc(dbms_random.value(1,n_count+1)) INTO n_rand_num FROM DUAL;

select gameid into n_id from (SELECT gameid FROM t_id T WHERE rownumn_rand_num

minus

SELECT gameid FROM t_id T WHERE rownumn_rand_num-1);

dbms_output.put_line(to_char(n_id));

end;

/

求教ORACLE大牛,怎么從分組中每組隨機(jī)取出特定數(shù)目的記錄

可以直接使用 Oracle 的 ROWNUM 偽列來處理。

或者 使用 ROW_NUMBER() OVER ( ORDER BY class ) 的分析函數(shù)來處理。

參考資料中,是關(guān)于 排名或順序的函數(shù) ROW_NUMBER/RANK/DENSE_RANK/NTILE 使用的例子。 SQL Server 與 Oracle 都可以用的。

Oracle 按行數(shù)分組怎么處理

不用下跪,我來挽救你。

select trunc((rownum - 1)/10)+1 as groups,max(field1),min(field1),avg(field1) from y61 group by trunc((rownum - 1)/10)+1 order by groups;

oracle中隨機(jī)抽取幾組數(shù)據(jù)

方法有很多種,這里提供一例供參考:

select * from (select * from scott.emp order by dbms_random.random) where rownum11;

如何隨機(jī)抽取oracle表中的記錄

1樓瞎扯,你那個(gè)不是隨機(jī)100行,每次運(yùn)行的結(jié)果都是一樣的;而且你用rank也不對,假如出現(xiàn)并列第100名,你那個(gè)返回的就不是100行了,應(yīng)該用row_number

真正要隨機(jī)應(yīng)該這樣寫:

select * from

(select sale_id,user_id,row_number() over (partition by sale_id order by rnv) rn

from

(select sale_id,user_id,dbms_random.value() rnv from table1

where fee=5000 and sms_fee0 and gprs_cmwap_fee0 and statis_month=201003)

)

where rn=100

order by sale_id,user_id;

oracle中根據(jù)條件取隨機(jī)N行

SELECT * FROM (

SELECT A,B,ROW_NUMBER() OVER(partition by A order by A desc) as RN

FROM TABLE

ORDER BY A,B

) WHERE RN5


網(wǎng)頁題目:oracle如何隨機(jī)組行,oracle 隨機(jī)
網(wǎng)站路徑:http://weahome.cn/article/dssdhgh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部