精华内容
下载资源
问答
  • Oracle中生成排名的三种方式

    千次阅读 2019-04-28 20:04:13
    比如查看员工的工资排名排名需要注意重复数据,对于重复数据有三种排名方式: 分别是: 顺序、同名跳号,同名不跳号 SELECT deptno, empno, sal, row_number() over (PARTITION BY deptno ORDER BY sal DESC...

    比如查看员工的工资排名。排名需要注意重复数据,对于重复数据有三种排名方式:
    分别是: 顺序、同名跳号,同名不跳号

    SELECT  deptno,
    		empno,
    		sal,
    		row_number() over (PARTITION BY deptno ORDER BY sal DESC) AS row_number,
    		rank() over (PARTITION BY deptno ORDER BY sal DESC) AS rank,
    		dense_rank() over (PARTITION BY deptno ORDER BY sal DESC) AS dense_rank
    FROM EMP /*EMP为员工表*/  
    WHERE  deptno = 20;			
    

    运行结果如下:(重点关注加粗的几个数字)
    DEPTNO EMPNO SAL ROW_NUMBER RANK DENSE_RANK
    20 7788 3000 1 1 1
    20 7902 3000 2 1 1
    20 7566 2975 3 3 2
    20 7876 1100 4 4 3
    20 7369 800 5 5 4
    实际查询时,确认好需求再定

    展开全文
  • 计算同一门课程下所有人的分数排名oracle 建表语句 create table a( id number , name varchar2(250), user_name varchar2(250), score number ); 查询语句: SELECT RANK() OVER(PARTITION BY NAME ORDER ...

    计算同一门课程下所有人的分数排名。

    oracle

    建表语句

    create table a(
          id number ,
          name varchar2(250),
          user_name varchar2(250),
          score number 
    );
    

    查询语句:

    SELECT RANK() OVER(PARTITION BY NAME ORDER BY SCORE DESC) AS PAIMING,
           NAME,
           USER_NAME,
           SCORE
      FROM (SELECT * FROM A ORDER BY NAME, SCORE DESC) A
    

    结果:
    查询结果

    mysql

    建表语句

    CREATE TABLE a (
     id INT(11) PRIMARY KEY AUTO_INCREMENT,
     major VARCHAR(20),
     user_name VARCHAR(20),
     score INT
    )
    

    查询语句

    此处思路:定义一个变量@rank用来计算排名,@nowType存当前数据的课程类型,@lastType存放上一条记录的课程类型,@rank递增,如果当前课程类型和上一条的课程类型不是 一种的时候,重置@rank的值为1,重新进行排序。

    SELECT a.*,
           @lastType := @nowType AS last_type,
           @nowType := a.major AS now_type,
           IF(@nowtype = @lastType, @rank := @rank + 1, @rank := 1) AS rank
      FROM a AS a, (SELECT @rank := 0, @nowType := 0) AS b
      ORDER BY major,score DESC
    

    结果:
    在这里插入图片描述
    ---------- ^ - ^-----------我要做那颗最张扬的韭菜!

    展开全文
  • oracle实现/排名/求百分比

    千次阅读 2012-11-08 19:47:42
    1- ROW_NUMBER() over() 实现排名 select a.*,ROW_NUMBER() over(ORDER BY nvl(sal,0) DESC) as "名次" from emp a; 2- 计算百分比函数 ratio_to_report(c_allbalance) over() as c_ratio 计算每...

    1- ROW_NUMBER() over()  实现排名

    select a.*,ROW_NUMBER() over(ORDER BY nvl(sal,0) DESC) as "名次" from emp a;

    2- 计算百分比函数

    ratio_to_report(c_allbalance) over() as c_ratio   计算每行 c_allbalance 占sum(c_allbalance)比例

    展开全文
  • oracle分组查询 查找出部门10和20中,工资最高1到2名的员工名字、部门名字、部门位置 select b.ename,a.dname,a.loc from dept a, ( select * from( select ename,sal,deptno,row_number() over(partition by deptno...

    oracle分组查询

    查找出部门10和20中,工资最高1到2名的员工名字、部门名字、部门位置
    select b.ename,a.dname,a.loc from dept a,
    (
    select * from(
    select ename,sal,deptno,row_number() over(partition by deptno order by sal desc)rank
    from EMP)a where a.rank between 1 and 2
    )b where a.deptno=b.deptno and b.deptno between 10 and 20

    在这里插入图片描述

    展开全文
  • 定义:ROW_NUMBER()函数作用就是将select查询到的数据进行排序,每一条数据加一个序号,他不能用做于学生成绩的排名,一般多用于分页查询,  比如查询前10个 查询10-100个学生。 实例: 1.1对学生成绩排序 &...
  • 先说一下表结构 名字name 分数fenshu 表名test1,以下查询的是成绩排名为第三名和第四名,这个模板让你查随意排名段的人 select name,fenshu,mc from (select name, fenshu,dense_rank() over (order by fenshu ...
  • 一共有3种 rank()并列 不连续 dense_rank()并列 连续 row_number()不并列 连续
  • Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...
  • SQL 获取排名排序后的名次

    万次阅读 2017-06-16 19:56:13
    一、查出所有用户和他们的分数排名(sql语句如下) /* 查出所有用户和他们的分数排名 * id string 用户id * score int 分数 * @ranknum int 索引数,每条索引数就是排名数 * (select (@ranknum :=0))
  • 按周统计 获取各个省份排名前十用户信息    select to_char(sysdate,'yyyy') as yYear,  to_char(sysdate-1, 'IW') as yWeek,   (select prov_name from ups_province where prov_code=mm.proCode) as proName,
  • Oracle排名函数(Rank)实例详解

    万次阅读 多人点赞 2010-12-03 18:03:00
    --已知:两种排名方式(分区和不分区):使用和不使用partition--两种计算方式(连续,不连续),对应函数:dense_rank,rank·查询原始数据:学号,姓名,科目名,成绩select * from t_scoreS_IDS_NAMESUB_NAMESCORE1张三 ...
  • ORACLE--排名分页

    2016-01-11 22:37:41
    ROWNUM含义   ROWNUM ...关键点:Oracle的rownum 数值是在获取每行之后才赋予的;     举例说明:   SQL> selectrownum,ename,job,sal from emp where rownum=1;  ROWNUM ENAME JOB 
  • Oracle与SQL Server应用差异对比分析在Oracle中采用伪列rownum 获取结果集中排在前面的部分记录 Eg: 返回结果集中前10条记录 Select * from sysc01 where rownum Rownum可使用<、符号,不可使用>、>=符号,如果使用...
  • Oracle 查最后一条记录

    2021-05-13 15:37:30
    今天遇到一个坑,使用Oracle查表的最后一条创建的记录。 路思 1:根据时间倒序排序。 2:查出第一条记录。 然后写出: select * from t_qms_bu_check_plan_flow where rownum= 1 order by CREATED_DATE DESC ; 实际...
  • Oracle

    2021-11-14 23:22:41
    Oracle 一、SQL **注意:**数据操纵语言(DML)包括insert(插入)命令、update(更新)命令、delete(删除)命令、select … for update(查询)等。只有提交(commit)后才能持久化到数据库。 1. create 2. select ...
  • 概述ORACLE函数系列:Oracle常见函数大全Oracle-分析函数之连续求和sum(…) over(…)Oracle-分析函数之排序值rank()和dense_rank()Oracle-分析函数之排序后顺序号row_number()Oracle-分析函数之取上下行数据lag()和...
  • Oracle 分组取出最大值记录

    千次阅读 2018-11-16 12:28:26
    一. 业务需求背景 找出一个固定ID值不同类型文件的最大版本号:也就是相同文件类型的 Max... rank函数用于返回结果集的分区内每行的排名,行的排名是相关行之前的排名数加一。简单来说rank函数就是对查询...
  • ORACLE 根据分组排序产生序列号

    千次阅读 2018-04-08 14:39:14
    如果我们想获取每个班级的第一名的学生的成绩,只要在外层再套一层seq的过滤,过滤seq=1的记录即可 select * from  ( select  row_number() over(partition by class order by score desc) seq, class,student ...
  • oracle特别函数FIRST_VALUE 从表里查询数据排序后,获取某一列的第一个值 select DISTINCT FIRST_VALUE(t.empno) over(order by t.deptno,t.sal) from emp1 t  
  • Oracle-- (RANK) 排名函数

    2019-07-08 11:27:13
    内容来自: Oracle® Database SQL Language Reference 11g Release 2 (11.2) E41084-03。 empolyees表来自hr方案。 RANK函数可以计算值在特定排序中的位置(使用聚合语法)及按指定列的值计算排名(使用统计...
  • Oracle函数

    千次阅读 2019-01-18 14:05:38
    Oracle函数 1、字符函数 --拼接字符串 select 'asdas'||'dasd' from dual; select concat('asfsad','sdafsd') from dual; --将字符串第一个字母变大写,如果是中文不影响运行 select initcap('sadf') from dual; ...
  • Oracle SQL分析函数row_number()获取前n条记录、去除重复记录
  • -sql语句关键字over的作用及用法 sql语句关键字over的作用及用法2 二、参考文章 参考文章:oracle计算比例,某字段的百分比 参考文章内容: 在oracle统计中,常常需要统计某些字段的占比,这里记录一下。...
  • 水果表:CREATE TABLE fruits (  f_id char(3),  s_id number(4),  f_name varchar2(20),  f_price number(4,1) ...水果数据:INSERT INTO fruits VALUES('a1', 101,'apple',5.2);...INSERT INTO fruits V
  • ----rank () OVER (PARTITION BY 列名 ORDER BY 列名 排序)使用分区方式获取每门课程的最高分 SELECT *  FROM (SELECT scoreid, studentid, coursename, TOTALEXAMSCORE,  rank () OVER (PARTITION BY ...
  • select top 3 * from line orderby lineid;...在Oracle中不支持select top n语句,所以需要用伪列 rownum,用法如下: select lineid,linename from (select * from line order by lineid) where ro...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,594
精华内容 3,437
关键字:

oracle获取排名