Oracle分析函数使用指南:RANK、DENSE_RANK、CUME_DIST等

需积分: 9 1 下载量 90 浏览量 更新于2024-09-20 收藏 94KB DOC 举报
Oracle 分析函数使用总结 Oracle 分析函数是 Oracle 数据库中的一种强大工具,用于对数据进行复杂的分析和处理。这些函数可以帮助我们快速地对数据进行排名、计算百分点、n 分片等操作。本文将对 Oracle 分析函数进行总结,包括评级函数、窗口函数和报表函数等。 一、评级函数 评级函数(Ranking Function)用于计算等级、百分点、n 分片等等。下面是几个常用的评级函数: 1. RANK() 函数:返回数据项在分组中的排名。特点:在排名相等的情况下会在名次中留下空位。 2. DENSE_RANK() 函数:与 RANK() 函数不同的是它在排名相等的情况下不会在名次中留下空位。 3. CUME_DIST() 函数:返回特定值相对于一组值的位置:他是“cumulative distribution”(累积分布)的简写。 4. PERCENT_RANK() 函数:返回某个值相对于一组值的百分比排名。 5. NTILE() 函数:返回 n 分片后的值,比如三分片、四分片等等。 6. ROW_NUMBER() 函数:为每一条分组纪录返回一个数字。 下面我们将举例来说明这些函数的使用: 首先,我们显示源表数据的结构及部分数据: SQL> desc all_sales; 名称 是否为空? 类型 ------------------------------------------------------------ YEARNOTNULLNUMBER(38) MONTHNOTNULLNUMBER(38) PRD_TYPE_IDNOTNULLNUMBER(38) EMP_IDNOTNULLNUMBER(38) AMOUNTNUMBER(8,2) SQL> select * from all_sales where rownum < 11; YEARMONTHPRD_TYPE_IDEMP_IDAMOUNT --------------------------------------------------- 2003112110034.84 2003212115144.65 2003312120137.83 2003412125057.45 2003512117214.56 2003612115564.64 2003712112654.84 2003812117434.82 2003912119854.57 20031012121754.19 已选择 10 行。 然后,我们将举例来说明 RANK() 和 DENSE_RANK() 函数的使用: SQL> select 2 prd_type_id, sum(amount), 3 RANK() OVER (ORDER BY SUM(amount)) as rank, 4 DENSE_RANK() OVER (ORDER BY SUM(amount)) as dense_rank 5 from all_sales 6 group by prd_type_id; 这两个函数的使用可以帮助我们对数据进行排名和百分点计算。 二、窗口函数 窗口函数(Window Function)用于对数据进行聚合操作,例如计算累积和、移动平均值等。下面是几个常用的窗口函数: 1. SUM() OVER() 函数:计算累积和。 2. AVG() OVER() 函数:计算移动平均值。 3. MAX() OVER() 函数:计算最大值。 4. MIN() OVER() 函数:计算最小值。 5. ROW_NUMBER() OVER() 函数:为每一条分组纪录返回一个数字。 下面我们将举例来说明窗口函数的使用: SQL> select 2 prd_type_id, sum(amount) OVER (PARTITION BY prd_type_id) as sum_amount, 3 AVG(amount) OVER (PARTITION BY prd_type_id) as avg_amount, 4 MAX(amount) OVER (PARTITION BY prd_type_id) as max_amount, 5 MIN(amount) OVER (PARTITION BY prd_type_id) as min_amount 6 from all_sales; 这几个函数的使用可以帮助我们对数据进行聚合操作。 三、报表函数 报表函数(Reporting Function)用于对数据进行报表处理,例如计算累积和、移动平均值等。下面是几个常用的报表函数: 1. ROLLUP() 函数:计算累积和。 2. CUBE() 函数:计算多维度报表。 3. GROUPING SETS() 函数:计算多个分组的报表。 下面我们将举例来说明报表函数的使用: SQL> select 2 prd_type_id, sum(amount) 3 from all_sales 4 group by ROLLUP(prd_type_id); 这几个函数的使用可以帮助我们对数据进行报表处理。 Oracle 分析函数提供了许多强大的函数来帮助我们对数据进行分析和处理。这些函数可以帮助我们快速地对数据进行排名、计算百分点、n 分片等操作。