目录
=========================================
1.报表函数简介
2.RATIO_TO_REPORT函数
一、报表函数简介:
回顾一下前面《Oracle开发专题之:窗口函数》中关于全统计一节,我们使用了Oracle提供的:
sum(sum(tot_sales)) over (order by month rows between unbounded preceding and unbounded following)
来统计全年的订单总额,这个函数会在记录集形成的过程中,每检索一条记录就执行一次,它总共执行了12次。这是非常费时的。实际上我们还有更简便的方法:
SQL> select month,
2 sum(tot_sales) month_sales,
3 sum(sum(tot_sales)) over(order by month
4 rows between unbounded preceding and unbounded following) win_sales,
5 sum(sum(tot_sales)) over() rpt_sales
6 from orders
7 group by month;

MONTH MONTH_SALES WINDOW_SALES REPORT_SALES
---------- ----------- ------------ ------------
1 610697 6307766 6307766
2 428676 6307766 6307766
3 637031 6307766 6307766
4 541146 6307766 6307766
5 592935 6307766 6307766
6 501485 6307766 6307766
7 606914 6307766 6307766
8 460520 6307766 6307766
9 392898 6307766 6307766
10 510117 6307766 6307766
11 532889 6307766 6307766
12 492458 6307766 6307766

已选择12行。
over函数的空括号表示该记录集的所有记录都应该被列入统计的范围,如果使用了partition by则先分区,再依次统计各个分区。
二、RATIO_TO_REPORT函数:
报表函数(窗口函数)特别适合于报表中需要同时显示详细数据和统计数据的情况。例如在销售报告中经常会出现这样的需求:列出上一年度每个月的销售总额、年底销售额以及每个月的销售额占全年总销售额的比例:
方法①:
select all_sales.*,
100 * round(cust_sales / region_sales, 2) || '%' Percent
from (select o.cust_nbr customer,
o.region_id region,
sum(o.tot_sales) cust_sales,
sum(sum(o.tot_sales)) over(partition by o.region_id) region_sales
from orders_tmp o
where o.year = 2001
group by o.region_id, o.cust_nbr) all_sales
where all_sales.cust_sales > all_sales.region_sales * 0.2;
这是一种笨方法也是最易懂的方法。
方法②:
select region_id, salesperson_id,
sum(tot_sales) sp_sales,
round(sum(tot_sales) / sum(sum(tot_sales))
over (partition by region_id), 2) percent_of_region
from orders
where year = 2001
group by region_id, salesperson_id
order by region_id, salesperson_id;
方法③
select region_id, salesperson_id,
sum(tot_sales) sp_sales,
round(ratio_to_report(sum(tot_sales))
over (partition by region_id), 2) sp_ratio
from orders
where year = 2001
group by region_id, salesperson_id
order by region_id, salesperson_id;
Oracle提供的Ratio_to_report函数允许我们计算每条记录在其对应记录集或其子集中所占的比例。
转载自:http://www.blogjava.net/pengpenglin/archive/2008/06/29/211462.html
分享到:
相关推荐
5 Oracle开发专题之:报表函数 6 Oracle开发专题之:分析函数总结 7 Oracle开发专题之:26个分析函数 8 分析函数简述">1 Oracle开发专题之:分析函数 OVER 2 Oracle开发专题之:分析函数 Rank Dense rank row ...
Oracle的分析函数、窗口函数和报表函数为数据分析师和开发人员提供了强大的工具,以处理日益复杂的数据需求。通过熟练掌握这些功能,可以编写出更高效的SQL查询,进行深入的数据挖掘和业务洞察。了解和应用这些函数...
综上所述,本文档《深入浅出Oracle EBS之Excel报表开发》旨在提供一个全面的指南,帮助读者了解如何在 Oracle EBS 环境下使用 Excel 和 VBA 进行高效、高质量的报表开发。无论是初学者还是经验丰富的开发者,都能...
3. 提高开发效率:递归函数可以提高开发效率,减少开发时间。 但是,递归函数也存在一些局限性,例如: 1. 性能问题:递归函数可能会导致性能问题,特别是在大规模数据集的情况下。 2. stack overflow 问题:递归...
Oracle数据库系统提供了丰富的内置函数,这些函数用于处理各种数据类型,包括字符串、数值以及日期等。以下是关于Oracle函数的一些详细说明: 1. ASCII函数:ASCII函数返回与输入字符相对应的ASCII码,即十进制数字...
Oracle开发专题之分析函数11Oracle开发专题之分析函数6Oracle开发专题之分析函数210Oracle开发专题之分析函数314Oracle开发专题之窗口函数20Oracle开发专题之报表函
### ORACLE报表分析利剑——分析函数:深度解析与应用 #### 一、理解分析函数:数据统计的新维度 分析函数作为Oracle数据库中一项高级功能,专为解决复杂报表统计需求设计,其核心优势在于能够对数据进行精细的...
oracle函数介绍 1 著名函数之单值函数 pdf oracle函数介绍 2 非著名函数之单值函数 pdf oracle函数介绍 3 著名函数之聚合函数 pdf oracle函数介绍 4 非著名函数之聚合函数 pdf oracle函数介绍 5 分析函数简述 ...
Oracle函数是数据库操作中的核心组成部分,它们允许开发人员和DBA执行各种计算、转换、查询和数据处理任务。手册中可能涵盖了以下几类函数: 1. 数学函数:如ABS(取绝对值)、MOD(取模)、ROUND(四舍五入)等,...
### ORACLE CRC32函数详解 ...通过以上介绍,我们可以了解到Oracle数据库中`CRC32`函数的强大之处及其在实际应用中的广泛用途。它不仅能够帮助我们有效地进行数据校验和去重,还能在一定程度上提高系统的整体性能。
3、灵活扩展:提供函数接口,支持用户根据实际需求进行二次开发和功能扩展。 4、易于集成:函数设计简洁,易于集成到现有的Oracle数据库系统中,无需复杂的配置和改造。 5、优化查询性能:通过避免复杂的子查询和...
oracle函数大全.chm oracle函数大全.chm
Oracle数据库系统提供了丰富的内置函数,方便用户在处理数据时进行各种操作。这些函数涵盖了字符串处理、数字计算、日期时间...开发人员在使用Oracle数据库时,应根据需求熟练掌握这些函数,以便更好地管理和操作数据。
### Oracle开发中的OVER函数详解 #### 一、Oracle分析函数简介 在Oracle数据库开发中,分析函数是一类非常强大的工具,主要用于实现复杂的查询需求,尤其是在处理大量数据时,能够提供高级的数据汇总、排序和筛选...
Oracle数据库是世界上最广泛使用的数据库系统之一,以其强大的功能和稳定性著称。在Oracle数据库中,函数扮演着至关重要的角色,它们允许用户进行复杂的计算、数据处理和信息提取。"Oracle函数大全(CHM格式).rar...
oracle之占比函数 oracle之占比函数 oracle之占比函数
Oracle Report Builder 是 Oracle 最初推出的报表开发工具之一。即使在 R12 版本中,它仍然是创建打印凭证等报表的首选工具。Report Builder 提供了一个直观的界面来设计和创建报表,并允许用户将复杂的数据转换成...
Oracle字符相似度函数是Oracle数据库系统提供的一种功能,用于评估两个字符串之间的相似性。这个功能在数据清洗、信息检索、文本分析等领域具有广泛的应用。在SQL查询中,我们可以直接使用这些函数来比较不同字符串...
Oracle数据库的SQL函数是数据库查询和管理中不可或缺的一部分,它们极大地丰富了SQL语言的功能,使得数据处理更加灵活和...理解并熟练掌握这些函数,能帮助数据库管理员和开发人员更高效地处理Oracle数据库中的数据。
Oracle数据库系统是世界上最广泛使用的数据库管理系统之一,其强大的功能和丰富的内置函数库是其核心竞争力。"Oracle常用函数chm版"是一个集合了多种Oracle数据库常用函数的参考资源,主要包含以下几个方面: 1. **...