`

oracle 分析函数之rank,dense_rank,row_number笔记

 
阅读更多

rank,dense_rank,row_number 函数都是为每条记录产生一个从1开始至N的自然数,N的值可能小于等于记录的总数。这3个函数的唯一区别在于,当碰到相同数据时的排名策略。

 

语法:rank() over(partition-clause order-by-clause)

 

rank:

rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条记录排名之间空出排名。


dense_rank:

dense_rank函数返回一个唯一的值,除非当碰到相同数据时,此时所有相同数据的排名都是一样的。

 

row_number:

row_number函数返回一个唯一的值,当碰到相同数据时,排名按照记录集中记录的顺序依次递增。

 

 

建表如下:

create table SMALL_CUSTOMERS(CUSTOMER_ID NUMBER,SUM_ORDERS  NUMBER);     
insert into SMALL_CUSTOMERS (CUSTOMER_ID, SUM_ORDERS) values (1000, 10);     
insert into SMALL_CUSTOMERS (CUSTOMER_ID, SUM_ORDERS) values (1000, 20);     
insert into SMALL_CUSTOMERS (CUSTOMER_ID, SUM_ORDERS) values (1000, 30);     
insert into SMALL_CUSTOMERS (CUSTOMER_ID, SUM_ORDERS) values (800, 5);     
insert into SMALL_CUSTOMERS (CUSTOMER_ID, SUM_ORDERS) values (800, 10);     
insert into SMALL_CUSTOMERS (CUSTOMER_ID, SUM_ORDERS) values (800, 1); 
 

 

 

具体用法如下:

select customer_id,
       sum_orders,
       row_number() over(order by sum_orders desc) rowNumber,
       rank() over(order by sum_orders desc) rank,
       dense_rank() over(order by sum_orders desc) denseRank
  from small_customers t;

 


 

也可以进行分组:

select customer_id,
       sum_orders,
       row_number() over(partition by customer_id order by sum_orders desc) rowNumber,
       rank() over(partition by customer_id order by sum_orders desc) rank,
       dense_rank() over(partition by customer_id order by sum_orders desc) denseRank
  from small_customers t;

 

 

 

  • 大小: 37.8 KB
  • 大小: 38.5 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    ORACLE 常用分析函数

    分析函数2(Rank, Dense_rank, row_number);分析函数3(Top/Bottom N、First/Last、NTile);窗口函数;报表函数;分析函数总结;26个分析函数;PLSQL开发笔记和小结;分析函数简述  ROW_NUMBER () OVER([partition_clause]...

    oracle 分析函数学习笔记

    Oracle的分析函数还包括`ROW_NUMBER`, `RANK`, `DENSE_RANK`用于行号分配,`LEAD`, `LAG`用于获取前后行数据,`FIRST_VALUE`, `LAST_VALUE`获取窗口范围内的第一个或最后一个值,以及`NTILE`进行分桶等。这些函数在...

    oracle分析函数全面解析

    - **Rank, Dense_rank, row_number**: 这三个函数都用于对行进行排序并分配唯一的数字。`RANK()`和`DENSE_RANK()`的区别在于处理相同值时是否跳过编号,`ROW_NUMBER()`则为每一行提供一个连续的唯一编号。 - **Top...

    oracle分析函数指南

    Oracle提供了26个内置的分析函数,包括`AVG()`, `COUNT()`, `MAX()`, `MIN()`, `SUM()`, `LEAD()`, `LAG()`, `RANK()`, `DENSE_RANK()`, `ROW_NUMBER()`等,每个都有其独特的用途和用法,熟练掌握这些函数可以显著...

    oracle分析函数

    - **RANK, DENSE_RANK, ROW_NUMBER**:这三个函数都用于为每行分配一个唯一的排名,区别在于RANK在有相同值时跳过排名号,DENSE_RANK不跳过,ROW_NUMBER则为每行分配连续的数字。 - **Top/Bottom N、First/Last**...

    oracle分析函数.doc

    - `RANK()`, `DENSE_RANK()`, `ROW_NUMBER()`:这三种函数用于为每一行分配一个唯一的序号,区别在于`RANK()`在有相同值时跳过序号,`DENSE_RANK()`不跳过,`ROW_NUMBER()`始终连续。 - `TOP/N Bottom N`:可以...

    深入浅出oracle分析函数(全)

    Oracle提供了26个内置的分析函数,包括`SUM()`, `COUNT()`, `AVG()`, `MIN()`, `MAX()`, `LAG()`, `LEAD()`, `CUME_DIST()`, `PERCENT_RANK()`, `RANK()`, `DENSE_RANK()`, `ROW_NUMBER()`, `NTILE()`, `FIRST_...

    三思笔记之Oracle函数.rar

    10. **窗口函数**:ROW_NUMBER(), RANK(), DENSE_RANK(), LAG(), LEAD()等在分组查询和数据分析中提供了更高级的计算能力。 通过"三思笔记之Oracle函数",读者可以全面了解并掌握Oracle数据库中的各种函数,提升在...

    三思笔记之oracle函数

    1. **RANK()**、**DENSE_RANK()**和**ROW_NUMBER()**:为每一行分配一个唯一的排名。 2. **LEAD()**和**LAG()**:获取当前行的后续或前一行的数据。 3. **SUM()**和**AVG()**:对分区内的数据进行累计求和和平均值...

    SQL分析函数进阶

    2. Rank, Dense_rank, row_number函数: 这些函数用于对数据进行排名。`ROW_NUMBER()`为每一行分配一个唯一的数字,`RANK()`和`DENSE_RANK()`也做类似的事情,但处理并列情况时有所不同。`RANK()`在遇到并列时会跳...

    oracle培训笔记2

    2. 分区函数:如RANK、DENSE_RANK、ROW_NUMBER,用于在分组后的数据中为每一行分配一个唯一的排名。 3. LAG和LEAD函数:向前或向后查看相邻行的数据,常用于分析和预测。 4. FIRST_VALUE和LAST_VALUE函数:获取每个...

    韩顺平oracle课堂笔记

    Oracle提供了多种分页查询的方法,如ROWNUM、ROW_NUMBER()、RANK()、DENSE_RANK()等。韩顺平老师的课堂笔记会解析这些方法的原理和使用场景,帮助读者理解如何有效地实现分页查询,优化查询性能,同时避免全表扫描。...

    oracle培训资料(整理版)

    通过这份"数据库培训笔记",学习者不仅可以掌握分析函数和内置函数的基本用法,还能了解如何在实际业务场景中应用这些功能,提升对Oracle数据库的管理和开发能力。无论是进行复杂查询、数据分析还是优化性能,这些...

    PL/SQL学习笔记

    本文主要探讨了在PL/SQL中使用的一些Oracle分析函数,尤其是评级函数,它们在数据分析和报表制作中扮演着重要角色。 1. **评级函数**: - **RANK()**:此函数根据指定的排序条件对数据进行排名。如果有相同值,它...

    oracle学习笔记

    在Oracle中,还有更高级的集合函数,如GROUP BY和HAVING用于分组查询,以及分析函数如RANK、DENSE_RANK和ROW_NUMBER,它们在处理复杂数据聚合和排序时非常有用。 总结来说,"Oracle学习笔记"涵盖了Oracle数据库的...

    我的Oracle 11g OCP学习笔记

    1. **数据仓库优化**:Oracle 11g引入了Advanced Analytics选项,包括新的SQL分析函数,如RANK()、DENSE_RANK()和ROW_NUMBER(),以及窗口函数,极大地提升了数据分析能力。 2. **自动存储管理(ASM)**:Oracle 11g...

Global site tag (gtag.js) - Google Analytics