今天碰到了一个业务场景,需要对一个表做分组分类的聚合查询。由于表很大,所以在数据库端解决这个问题是最佳的选择。于是请了Ray同学帮忙,他教了我一个Oracle上的聚合函数的使用,非常不错。
其实现在Oracle对于rank和dense_rank已经支持合计功能,不过这次我仅仅使用了其分析功能。具体语法如下:RANK ( ) OVER ( [query_partition_clause] order_by_clause )。
下面给出一些来自网上的示例:
TABLE:S (subject,mark)
数学,80
语文,70
数学,90
数学,60
数学,100
语文,88
语文,65
语文,77
现在我想要的结果是:每门科目的前3名的分数
数学,100
数学,90
数学,80
语文,88
语文,77
语文,70
那么语句就这么写:
select * from (select rank() over(partition by subject order by mark desc) rk,S.* from S) T
where T.rk<=3;
dense_rank与rank()用法相当,但是有一个区别:dence_rank在处理相同的等级时,等级的数值不会跳过。rank则跳过。
例如:表
A B C
a liu wang
a jin shu
a cai kai
b yang du
b lin ying
b yao cai
b yang 99
例如:当rank时为:
select m.a,m.b,m.c,rank() over(partition by a order by b) liu from test3 m
A B C LIU
a cai kai 1
a jin shu 2
a liu wang 3
b lin ying 1
b yang du 2
b yang 99 2
b yao cai 4
而如果用dense_rank时为:
select m.a,m.b,m.c,dense_rank() over(partition by a order by b) liu from test3 m
A B C LIU
a cai kai 1
a jin shu 2
a liu wang 3
b lin ying 1
b yang du 2
b yang 99 2
b yao cai 3
分享到:
相关推荐
Oracle分析函数Rank、Dense_rank和row_number是用于处理数据集的高级工具,它们在数据库查询中发挥着关键作用,特别是在需要对数据进行排序和分组时。这三种函数都有各自的特点,适用于不同的业务场景。 1. **row_...
5. **聚合函数**: COUNT、SUM、AVG、MAX、MIN,用于对一组值进行统计。COUNT返回行数,SUM计算总和,AVG求平均值,MAX和MIN找出最大值和最小值。 6. **系统信息函数**: USER、DBMS_METADATA.GET_DDL等,用于...
* LISTAGG 函数可以与其他分析函数和聚合函数组合使用,以实现更加复杂的数据处理。 * LISTAGG 函数可以用于实现数据的分组和合并,提高数据处理的效率和简洁性。 * 在使用 LISTAGG 函数时,需要根据具体情况选择...
最后,提供的文档和文本文件,如"oracle日期和时间处理汇总.doc"、"Oracle聚合函数RANK和dense_rank的使用.htm"等,都是极好的学习资源,可以深入研究每个函数的详细信息和示例。通过阅读和实践,你将能够充分利用...
在Oracle数据库中,分析函数和聚合函数是SQL查询中用于处理和汇总数据的重要工具。本文将详细介绍两者的主要功能和用法。 首先,我们关注的是排名函数。在Oracle中,有三种常用的排名函数: 1. `RANK()`: 这个函数...
Oracle 分析函数中提供了多种聚合函数,包括: 3.1 AVG 函数 AVG 函数用于计算表达式的平均值。 3.2 CORR 函数 CORR 函数用于计算两个表达式之间的互相关性。 3.3 COUNT 函数 COUNT 函数用于计算表达式的计数...
除了这些,Oracle分析函数还包括RANK、DENSE_RANK、ROW_NUMBER等排名函数,LEAD和LAG用于获取当前行之前或之后的值,FIRST_VALUE和LAST_VALUE则返回窗口内的第一个或最后一个值,以及NTILE用于将数据分桶等。...
Oracle数据库系统是世界上最广泛使用的数据库管理系统之一,尤其在企业级应用中占据主导地位。其中,Oracle的分析函数是其强大的特性之一,它允许用户在单个SQL查询中执行复杂的分析操作,而无需使用子查询或者自...
在Oracle数据库中,分析函数主要分为评级函数、窗口函数和聚合函数等几类。本文将重点讨论评级函数的使用,包括RANK()、DENSE_RANK()、CUME_DIST()、PERCENT_RANK()和NTILE(),以及ROW_NUMBER()。 1. RANK() 函数:...
- 当`OVER`子句中使用`PARTITION BY NULL`时,意味着所有的行都被视为同一个分区,即整个结果集被视为一个整体来进行计算。 #### 六、总结 通过本文的学习,我们可以看到Oracle开窗函数的强大之处。无论是进行复杂...
它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。 开窗函数是分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化。开窗函数可以指定数据窗口的大小和范围,例如...
本文将详细介绍Oracle分析函数中的评级函数,包括RANK()、DENSE_RANK()、CUME_DIST()、PERCENT_RANK()和NTILE(),并结合示例进行解析。 1. RANK()函数: RANK()函数返回每个行在指定排序下的排名。如果两个或更多...
这个中文帮助文档是开发者和DBA们在进行Oracle数据库操作时的重要工具,它能提供详尽的函数解释、用法示例以及相关提示。 1. **SQL函数类别**: - 数学函数:如ABS、MOD、ROUND等,用于数学计算和数值处理。 - ...
ROW_NUMBER,RANK,DENSE_RANK提供窗口排序,LEAD和LAG获取当前行的前一行或后一行数据,FIRST_VALUE和LAST_VALUE获取窗口内的第一个或最后一个值。 这个中文API文档将详细介绍这些函数的语法、参数、返回值以及...
- CONNECT_BY_ROOT/CONNECT_BY_ISLEAF:在层次查询中使用,标识根节点或叶子节点。 10. **系统信息函数** - USER:返回当前用户的名称。 - DBMS_METADATA:获取对象的DDL语句,用于脚本生成。 以上只是Oracle内...
在数据分析中,聚合函数如COUNT、SUM、AVG、MAX和MIN经常被用到。COUNT计数,SUM求和,AVG计算平均值,MAX和MIN找到最大值和最小值。GROUP BY和HAVING语句常与这些函数一起使用,用于分组数据并应用条件过滤。 五、...
Oracle分析函数是数据库查询中非常强大的工具,它们用于在数据集上执行聚合操作,并返回每个行的上下文信息。在Oracle数据库中,分析函数能够帮助我们处理复杂的分组和排序需求,尤其在报告和数据分析中非常有用。...
Oracle 分析函数是数据库查询中的一种强大工具,用于在数据集上执行聚合操作,同时保持行的原始顺序。本文将详细介绍其中的评级函数,包括RANK()、DENSE_RANK()、PERCENT_RANK()、CUME_DIST()以及NTILE(),并以实际...
6. **聚合函数**: - COUNT:计算行数。 - SUM:计算数值列的总和。 - AVG:计算平均值。 - MAX/MIN:找到数值列的最大值/最小值。 7. **转换函数**: - TO_CHAR/TO_DATE:将数值或日期转换为字符串,反之亦然...