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 页