学生表:
create table hy_student( id number(4,0) primary key, name nvarchar2(20) not null, score number(3,0) not null)
充值:
insert into hy_student select rownum,dbms_random.string('*',dbms_random.value(1,20)),dbms_random.value(0,100) from dual connect by level<201 order by dbms_random.random
第一步把学生按成绩逆序排列:
select * from hy_student order by score desc
第二步给加伪列:
select rownum as rn,a.* from (select * from hy_student order by score desc) a
最后就可以检出前10%的精英了:
select b.* from (select rownum as rn,a.* from (select * from hy_student order by score desc) a) b where b.rn<= (select count(*) from hy_student)/10
结果:
--2020-04-02--
以上用到的全部SQL:
create table hy_student( id number(4,0) primary key, name nvarchar2(20) not null, score number(3,0) not null) insert into hy_student select rownum,dbms_random.string('*',dbms_random.value(1,20)),dbms_random.value(0,100) from dual connect by level<201 order by dbms_random.random commit; select * from hy_student order by score desc select rownum as rn,a.* from (select * from hy_student order by score desc) a select b.* from (select rownum as rn,a.* from (select * from hy_student order by score desc) a) b where b.rn<= (select count(*) from hy_student)/10