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 原型和构造函数
    react native与原生的交互
    项目中git的用法
    web页面的回流,认识与避免
    js 中的算法题,那些经常看到的
    js中this的四种调用模式
    JS面向对象的几种写法
    模块化加载require.js
    es6新语法
    vue组件化开发
  • 原文地址:https://www.cnblogs.com/heyang78/p/12619631.html
Copyright © 2011-2022 走看看