SQL分組獲取隨機記錄

2021-08-14 05:16:38 字數 1400 閱讀 8605

主要是利用row_number() over()函式以及dbms_random.value產生的隨機數大小排序進行,再對固定的排序序號進行統一取值,

select id,

empno ,

row_number() over(partition by empno order by dbms_random.value) as row_num

from emp t;

score

empno

row_num

493652

21092

1492765

21092

2430016

21097

144490

21097

222688

22527

14498

22527

282139

225273

如果要隨機獲取每乙個員工其中的一次score,則可以將上面的的結果作為子查詢,在row_num=1,就可以獲取隨機記錄了

select score, empno

from (select score,

empno,

row_number() over(partition by staffid order by dbms_random.value) as row_num

from emp) t

where t.row_num = 1;

score

empno

row_num

3652

21092

130016

21097

180329

22527

19219

22566

12956

23112

14052

23119

1766

23164

1 這樣,每次查詢的結果都是隨機的了,有可能相同,有可能不同。

如果不用分組,那就更簡單了。

select * from (select * from emp order by dbms_random.value)      where rownum < 10
隨機獲取

9個記錄。

SQL分組獲取隨機記錄

分類專欄 sql 主要是利用row number over 函式以及dbms random.value產生的隨機數大小排序進行,再對固定的排序序號進行統一取值,select id,empno row number over partition by empno order by dbms rando...

SQL 分組後獲取時間為最新的記錄

1.建立一張test表,表結構如下 create table test id int 11 not null name varchar 255 not null type varchar 255 not null create time timestamp primary key id 2.插入幾條...

Oracle獲取隨機記錄

最近在做乙個小的考試系統,需要用到隨機抽取題目,於是就從網上搜到如下方法 1.dbms random包 select from select from tablename order by dbms random.value where rownum n 注 dbms random包需要手工安裝,位...