《Oracle 分析函数的使用》由会员分享,可在线阅读,更多相关《Oracle 分析函数的使用(18页珍藏版)》请在金锄头文库上搜索。
1、Oracle 分析函数使用介绍分析函数是 oracle816 引入的一个全新的概念,为我们分析数据提供了一种简单高效的处理方式.在分析函数出现以前,我们必须使用自联查询,子查询或者内联视图,甚至复杂的存储过程实现的语句,现在只要一条简单的 sql 语句就可以实现了,而且在执行效率方面也有相当大的提高.下面我将针对分析函数做一些具体的说明.今天我主要给大家介绍一下以下几个函数的使用方法1. 自动汇总函数 rollup,cube,2. rank 函数, rank,dense_rank,row_number3. lag,lead 函数4. sum,avg,的移动增加,移动平均数5. ratio_to
2、_report 报表处理函数6. first,last 取基数的分析函数06:34:23 SQL select * from t;BILL_MONTH AREA_CODE NET_TYPE LOCAL_FARE- - - -200405 5761 G 7393344.04200405 5761 J 5667089.85200405 5762 G 6315075.96200405 5762 J 6328716.15200405 5763 G 8861742.59200405 5763 J 7788036.32200405 5764 G 6028670.45200405 5764 J 645912
3、1.49200405 5765 G 13156065.77200405 5765 J 11901671.70200406 5761 G 7614587.96200406 5761 J 5704343.05200406 5762 G 6556992.60200406 5762 J 6238068.05200406 5763 G 9130055.46200406 5763 J 7990460.25200406 5764 G 6387706.01200406 5764 J 6907481.66200406 5765 G 13562968.81200406 5765 J 12495492.502004
4、07 5761 G 7987050.65200407 5761 J 5723215.28200407 5762 G 6833096.68200407 5762 J 6391201.44200407 5763 G 9410815.91200407 5763 J 8076677.41200407 5764 G 6456433.23200407 5764 J 6987660.53200407 5765 G 14000101.20200407 5765 J 12301780.20200408 5761 G 8085170.84200408 5761 J 6050611.37200408 5762 G
5、6854584.22200408 5762 J 6521884.50200408 5763 G 9468707.65200408 5763 J 8460049.43200408 5764 G 6587559.23BILL_MONTH AREA_CODE NET_TYPE LOCAL_FARE- - - -200408 5764 J 7342135.86200408 5765 G 14450586.63200408 5765 J 12680052.3840 rows selected.Elapsed: 00:00:00.00下面是直接使用普通 sql 语句求出各地区的汇总数据的例子06:41:3
6、6 SQL set autot on06:43:36 SQL select area_code,sum(local_fare) local_fare06:43:50 2 from t06:43:51 3 group by area_code06:43:57 4 union all06:44:00 5 select 合计 area_code,sum(local_fare) local_fare06:44:06 6 from t06:44:08 7 /AREA_CODE LOCAL_FARE- -5761 54225413.045762 52039619.605763 69186545.02576
7、4 53156768.465765 104548719.19合计 333157065.316 rows selected.Elapsed: 00:00:00.03Execution Plan-0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=7 Card=1310 Bytes=24884)1 0 UNION-ALL2 1 SORT (GROUP BY) (Cost=5 Card=1309 Bytes=24871)3 2 TABLE ACCESS (FULL) OF T (Cost=2 Card=1309 Bytes=24871)4 1 SORT (AGGR
8、EGATE)5 4 TABLE ACCESS (FULL) OF T (Cost=2 Card=1309 Bytes=17017)Statistics-0 recursive calls0 db block gets6 consistent gets0 physical reads0 redo size561 bytes sent via SQL*Net to client503 bytes received via SQL*Net from client2 SQL*Net roundtrips to/from client1 sorts (memory)0 sorts (disk)6 row
9、s processed下面是使用分析函数 rollup 得出的汇总数据的例子06:44:09 SQL select nvl(area_code,合计) area_code,sum(local_fare) local_fare06:45:26 2 from t06:45:30 3 group by rollup(nvl(area_code,合计)06:45:50 4 /AREA_CODE LOCAL_FARE- -5761 54225413.045762 52039619.605763 69186545.025764 53156768.465765 104548719.19333157065.3
10、16 rows selected.Elapsed: 00:00:00.00Execution Plan-0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=5 Card=1309 Bytes=24871)1 0 SORT (GROUP BY ROLLUP) (Cost=5 Card=1309 Bytes=24871)2 1 TABLE ACCESS (FULL) OF T (Cost=2 Card=1309 Bytes=24871)Statistics-0 recursive calls0 db block gets4 consistent gets0 physical reads0 redo size557 bytes sent via SQL*Net to client503 bytes received via SQL*Net from client2 SQL*Net roundtrips to/from client1 sorts (memory)0 sorts (disk)6 rows processed从上面的例子我们不难看出使用从上面的例子我们不难看出使用 rollup 函数函数,系统的系统的 sql 语句更加简单语