2024年4月19日发(作者:)
oracle中over函数用法
(实用版)
目录
中 over 函数的概述
函数的基本语法与参数
函数的使用场景与实例
函数与其他分析函数的配合使用
5.总结
正文
一、Oracle 中 over 函数的概述
Oracle 中的 over 函数是一种分析函数,用于对查询结果进行分区
和排序。它可以让我们在查询成绩时,按照不同的条件对数据进行汇总和
分析,从而得到更加精确和具体的结果。
二、over 函数的基本语法与参数
over 函数的基本语法如下:
```
over(partition, by, expr2, order, by, expr3)
```
其中,各个参数的含义如下:
- partition:用于对结果进行分区的条件,可以是一个表分区或者
一个列;
- by:指定分区的顺序,可以是升序(ASC)或降序(DESC);
- expr2:指定分区内的排序条件,可以是一个列或者一个表达式;
第 1 页 共 3 页
- order:指定排序的顺序,可以是升序(ASC)或降序(DESC);
- by:指定排序的列名;
- expr3:可选参数,用于指定在每个分区内需要计算的聚合函数,
如 sum、avg、count 等。
三、over 函数的使用场景与实例
over 函数通常与 rownumber()、rank() 和 denserank、lag() 和
lead() 等分析函数配合使用,以实现更加复杂的查询需求。以下是一些
常见的使用场景与实例:
1.按照班级统计每个班级的总分和平均分:
```
select over(partition, by, ) sum() as
total_score, over(partition, by, ) avg() as
average_score
from tscore t, ts_student s
where t_id =
order by ;
```
2.按照时间分区,统计每个时间段内的总销售额:
```
select to_char(order_date, "YYYY-MM-DD") as sales_date,
over(partition, by, to_char(order_date, "YYYY-MM-DD"))
sum(sales_amount) as total_sales
from sales
order by order_date;
第 2 页 共 3 页
```
3.计算每个学生的成绩排名:
```
select student_id, over(partition, by, rank()) rank_score
from (
select student_id, score, rownumber() over(order by score)
as rank
from exams
) t;
```
四、over 函数与其他分析函数的配合使用
over 函数可以与其他分析函数相互配合,以实现更加复杂的数据分
析需求。以下是一些常见的配合使用方式:
- over(partition, by, expr2) + rank(),用于分区排名;
- over(partition, by, expr2) + sum(),用于分区汇总;
- over(partition, by, expr2) + avg(),用于分区平均值;
- over(partition, by, expr2) + count(),用于分区计数。
五、总结
Oracle 中的 over 函数是一种强大的分析函数,可以对查询结果进
行分区和排序,实现各种复杂的数据分析需求。
第 3 页 共 3 页


发布评论