知识大全 Oracle分析函数的使用一
Posted 函数
篇首语:尺有所短;寸有所长。物有所不足;智有所不明。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle分析函数的使用一相关的知识,希望对你有一定的参考价值。
Oracle分析函数的使用一 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
分析函数是oracle 引入的一个全新的概念 为我们分析数据提供了一种简单高效的处理方式 在分析函数出现以前 我们必须使用自联查询 子查询或者内联视图 甚至复杂的存储过程实现的语句 现在只要一条简单的sql语句就可以实现了 而且在执行效率方面也有相当大的提高 下面我将针对分析函数做一些具体的说明
今天我主要给大家介绍一下以下几个函数的使用方法
自动汇总函数rollup cube
rank 函数 rank dense_rank row_number
lag lead函数
sum avg 的移动增加 移动平均数
ratio_to_report报表处理函数
first last取基数的分析函数
基础数据
Code: [Copy to clipboard]
: : SQL> select * from t;
BILL_MONTH AREA_CODE NET_TYPE LOCAL_FARE
G
J
G
J
G
J
G
J
G
J
G
J
G
J
G
J
G
J
G
J
G
J
G
J
G
J
G
J
G
J
G
J
G
J
G
J
G
BILL_MONTH AREA_CODE NET_TYPE LOCAL_FARE
J
G
J
rows selected
Elapsed: : :
使用rollup函数的介绍
Quote:
下面是直接使用普通sql语句求出各地区的汇总数据的例子
: : SQL> set autot on
: : SQL> select area_code sum(local_fare) local_fare
: : from t
: : group by area_code
: : union all
: : select 合计 area_code sum(local_fare) local_fare
: : from t
: : /
AREA_CODE LOCAL_FARE
合计
rows selected
Elapsed: : :
Execution Plan
SELECT STATEMENT Optimizer=ALL_ROWS (Cost= Card= Bytes=
)
UNION ALL
SORT (GROUP BY) (Cost= Card= Bytes= )
TABLE ACCESS (FULL) OF T (Cost= Card= Bytes=
)
SORT (AGGREGATE)
TABLE ACCESS (FULL) OF T (Cost= Card= Bytes=
)
Statistics
recursive calls
db block gets
consistent gets
physical reads
redo size
bytes sent via SQL*Net to client
bytes received via SQL*Net from client
SQL*Net roundtrips to/from client
sorts (memory)
sorts (disk)
rows processed
下面是使用分析函数rollup得出的汇总数据的例子
: : SQL> select nvl(area_code 合计 ) area_code sum(local_fare) local_fare
: : from t
: : group by rollup(nvl(area_code 合计 ))
: : /
AREA_CODE LOCAL_FARE
rows selected
Elapsed: : :
Execution Plan
SELECT STATEMENT Optimizer=ALL_ROWS (Cost= Card= Bytes=
)
SORT (GROUP BY ROLLUP) (Cost= Card= Bytes= )
TABLE ACCESS (FULL) OF T (Cost= Card= Bytes=
)
Statistics
recursive calls
db block gets
consistent gets
physical reads
redo size
bytes sent via SQL*Net to client
bytes received via SQL*Net from client
SQL*Net roundtrips to/from client
sorts (memory)
sorts (disk)
rows processed
从上面的例子我们不难看出使用rollup函数 系统的sql语句更加简单 耗用的资源更少 从 个consistent gets降到 个consistent gets 如果基表很大的话 结果就可想而知了
使用cube函数的介绍
Quote:
为了介绍cube函数我们再来看看另外一个使用rollup的例子
: : SQL> select area_code bill_month sum(local_fare) local_fare
: : from t
: : group by rollup(area_code bill_month)
: : /
AREA_CODE BILL_MONTH LOCAL_FARE
rows selected
Elapsed: : :
系统只是根据rollup的第一个参数area_code对结果集的数据做了汇总处理 而没有对bill_month做汇总分析处理 cube函数就是为了这个而设计的
下面 让我们看看使用cube函数的结果
: : SQL> select area_code bill_month sum(local_fare) local_fare
: : from t
: : group by cube(area_code bill_month)
: : order by area_code bill_month nulls last
: : /
AREA_CODE BILL_MONTH LOCAL_FARE
rows selected
Elapsed: : :
可以看到 在cube函数的输出结果比使用rollup多出了几行统计数据 这就是cube函数根据bill_month做的汇总统计结果]
rollup 和 cube函数的再深入
Quote:
从上面的结果中我们很容易发现 每个统计数据所对应的行都会出现null 我们如何来区分到底是根据那个字段做的汇总呢 这时候 oracle的grouping函数就粉墨登场了
如果当前的汇总记录是利用该字段得出的 grouping函数就会返回 否则返回
select decode(grouping(area_code) all area to_char(area_code)) area_code
decode(grouping(bill_month) all month bill_month) bill_month
sum(local_fare) local_fare
from t
group by cube(area_code bill_month)
* order by area_code bill_month nulls last
: : SQL> /
AREA_CODE BILL_MONTH LOCAL_FARE
all month
all month
all month
all month
all month
all area
all area
all area
all area
all area all month
rows selected
Elapsed: : :
: : SQL>
相关参考
Oracle9i分析函数参考手册 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oracle从开
Oracle使用hash分区优化分析函数查询 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在O
新手上路:Oracle分析函数学习笔记一 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 环境wi
知识大全 oracle的分析函数over(Partition by...)
oracle的分析函数over(Partitionby...) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来
利用Oracle分析函数实现多行数据合并为一行 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! d
Oracle数据对象分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 过程和函数 过程和
Oracle通用函数,分组函数,子查询 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 注意)Or
知识大全 Oracle中sign函数和decode函数的使用
Oracle中sign函数和decode函数的使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Oracle聚集函数排序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 对于按照自定义聚集函数连
Oracle认证:Oracle随机函数调用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Oracl