zoukankan      html  css  js  c++  java
  • 经典SQL问题:Top 10%

    学生表:

    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
  • 相关阅读:
    Javascript继承,再谈
    RHEL7使用systemctl管理服务
    centos7进入单用户模式修改root密码
    IBM DS5020 管理口密码重置
    IBM小机拆镜像换盘
    HMC版本支持
    IBM产品系列和AIX系统版本
    AIX 6.1创建逻辑卷并挂载【smitty】
    AIX中的网络管理
    创建AIX克隆盘
  • 原文地址:https://www.cnblogs.com/heyang78/p/12619631.html
Copyright © 2011-2022 走看看