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
  • 相关阅读:
    C#中的编译为什么不叫Compile而叫build
    类型(Type)
    C#中关于值类型和引用类型的区别
    php通用化api格式输出
    tp6获取参数的五种办法
    PHP 数组------分割、合并
    explain结果中的type字段的含义
    order by 排序
    SQL开发技巧
    tp5模板输出日期时间
  • 原文地址:https://www.cnblogs.com/heyang78/p/12619631.html
Copyright © 2011-2022 走看看