`

Oracle开发专题之:报表函数(转载)

 
阅读更多

目录
=========================================

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

分享到:
评论

相关推荐

    oracle 分析函数详解(有例子)

    5 Oracle开发专题之:报表函数 6 Oracle开发专题之:分析函数总结 7 Oracle开发专题之:26个分析函数 8 分析函数简述">1 Oracle开发专题之:分析函数 OVER 2 Oracle开发专题之:分析函数 Rank Dense rank row ...

    oracle分析函数,窗口函数,报表函数

    Oracle的分析函数、窗口函数和报表函数为数据分析师和开发人员提供了强大的工具,以处理日益复杂的数据需求。通过熟练掌握这些功能,可以编写出更高效的SQL查询,进行深入的数据挖掘和业务洞察。了解和应用这些函数...

    深入浅出Oracle_EBS之Excel报表开发.pdf

    综上所述,本文档《深入浅出Oracle EBS之Excel报表开发》旨在提供一个全面的指南,帮助读者了解如何在 Oracle EBS 环境下使用 Excel 和 VBA 进行高效、高质量的报表开发。无论是初学者还是经验丰富的开发者,都能...

    Oracle 递归函数介绍

    3. 提高开发效率:递归函数可以提高开发效率,减少开发时间。 但是,递归函数也存在一些局限性,例如: 1. 性能问题:递归函数可能会导致性能问题,特别是在大规模数据集的情况下。 2. stack overflow 问题:递归...

    oracle函数大全 oracle函数大全

    Oracle数据库系统提供了丰富的内置函数,这些函数用于处理各种数据类型,包括字符串、数值以及日期等。以下是关于Oracle函数的一些详细说明: 1. ASCII函数:ASCII函数返回与输入字符相对应的ASCII码,即十进制数字...

    oracle分析函数

    Oracle开发专题之分析函数11Oracle开发专题之分析函数6Oracle开发专题之分析函数210Oracle开发专题之分析函数314Oracle开发专题之窗口函数20Oracle开发专题之报表函

    ORACLE报表分析利剑——分析函数

    ### ORACLE报表分析利剑——分析函数:深度解析与应用 #### 一、理解分析函数:数据统计的新维度 分析函数作为Oracle数据库中一项高级功能,专为解决复杂报表统计需求设计,其核心优势在于能够对数据进行精细的...

    ORACLE函数介绍 全系列中文

    oracle函数介绍 1 著名函数之单值函数 pdf oracle函数介绍 2 非著名函数之单值函数 pdf oracle函数介绍 3 著名函数之聚合函数 pdf oracle函数介绍 4 非著名函数之聚合函数 pdf oracle函数介绍 5 分析函数简述 ...

    oracle 函数大全 参考函数 手册 速查 chm格式

    Oracle函数是数据库操作中的核心组成部分,它们允许开发人员和DBA执行各种计算、转换、查询和数据处理任务。手册中可能涵盖了以下几类函数: 1. 数学函数:如ABS(取绝对值)、MOD(取模)、ROUND(四舍五入)等,...

    ORACLE CRC32函数

    ### ORACLE CRC32函数详解 ...通过以上介绍,我们可以了解到Oracle数据库中`CRC32`函数的强大之处及其在实际应用中的广泛用途。它不仅能够帮助我们有效地进行数据校验和去重,还能在一定程度上提高系统的整体性能。

    Oracle函数:根据自定义分隔符拆分字段SPLIT-STR()然后查询检索数据库表数据

    3、灵活扩展:提供函数接口,支持用户根据实际需求进行二次开发和功能扩展。 4、易于集成:函数设计简洁,易于集成到现有的Oracle数据库系统中,无需复杂的配置和改造。 5、优化查询性能:通过避免复杂的子查询和...

    oracle函数大全.chm

    oracle函数大全.chm oracle函数大全.chm

    oracle内置函数大全

    Oracle数据库系统提供了丰富的内置函数,方便用户在处理数据时进行各种操作。这些函数涵盖了字符串处理、数字计算、日期时间...开发人员在使用Oracle数据库时,应根据需求熟练掌握这些函数,以便更好地管理和操作数据。

    Oracle开发的over函数

    ### Oracle开发中的OVER函数详解 #### 一、Oracle分析函数简介 在Oracle数据库开发中,分析函数是一类非常强大的工具,主要用于实现复杂的查询需求,尤其是在处理大量数据时,能够提供高级的数据汇总、排序和筛选...

    oracle函数大全(CHM格式).rar

    Oracle数据库是世界上最广泛使用的数据库系统之一,以其强大的功能和稳定性著称。在Oracle数据库中,函数扮演着至关重要的角色,它们允许用户进行复杂的计算、数据处理和信息提取。"Oracle函数大全(CHM格式).rar...

    oracle之占比函数

    oracle之占比函数 oracle之占比函数 oracle之占比函数

    OracleEBS-报表开发工具

    Oracle Report Builder 是 Oracle 最初推出的报表开发工具之一。即使在 R12 版本中,它仍然是创建打印凭证等报表的首选工具。Report Builder 提供了一个直观的界面来设计和创建报表,并允许用户将复杂的数据转换成...

    Oracle字符相似度函数

    Oracle字符相似度函数是Oracle数据库系统提供的一种功能,用于评估两个字符串之间的相似性。这个功能在数据清洗、信息检索、文本分析等领域具有广泛的应用。在SQL查询中,我们可以直接使用这些函数来比较不同字符串...

    Oracle数据库sql函数及语法

    Oracle数据库的SQL函数是数据库查询和管理中不可或缺的一部分,它们极大地丰富了SQL语言的功能,使得数据处理更加灵活和...理解并熟练掌握这些函数,能帮助数据库管理员和开发人员更高效地处理Oracle数据库中的数据。

    oracle常用函数chm版

    Oracle数据库系统是世界上最广泛使用的数据库管理系统之一,其强大的功能和丰富的内置函数库是其核心竞争力。"Oracle常用函数chm版"是一个集合了多种Oracle数据库常用函数的参考资源,主要包含以下几个方面: 1. **...

Global site tag (gtag.js) - Google Analytics