Oracle开发之分析函数简介Over用法
什么是分析函数?
分析函数,也称为窗口函数或OLAP函数,是Oracle数据库中的一种高级功能。分析函数能够进行数据的分组和聚合,同时还能对查询结果进行排序、排名、计算移动平均等。
分析函数有多种类型,包括聚合函数、统计函数和排序函数等,它们都可以使用 OVER
子句来指定分析条件。
Over 用法
语法格式:
<分析函数> OVER ([PARTITION BY <列名1>, <列名2>, …] [ORDER BY <列名1> [ASC|DESC], <列名2> [ASC|DESC], …])
OVER
子句可以包含 PARTITION BY
和 ORDER BY
子句,用于指定分析函数的分组和排序条件。
-
PARTITION BY
子句:将查询结果按指定的列进行分组,每个分组内的数据独立计算分析函数的结果。 -
ORDER BY
子句:对每个分组内的数据排序,然后再应用分析函数。
示例说明
示例1:使用 RANK() 函数
RANK()
函数可以返回每行数据在分组中的排名值。下面的示例使用 RANK()
函数来计算每个销售部门员工的销售业绩排名:
SELECT deptno, empno, sal, RANK() OVER (PARTITION BY deptno ORDER BY sal DESC) as rank from emp;
解析:
PARTITION BY deptno
:按照部门编号进行分组。ORDER BY sal DESC
:按照销售业绩从高到低进行排序,然后对每个部门内的员工进行排名。
结果:
DEPTNO EMPNO SAL RANK
------- -------------------------------- ---------- ---------- ----------
10 7839 5000 1
10 7782 2450 2
20 7902 3000 1
20 7566 2975 2
20 7788 3000 1
20 7876 1100 4
20 7369 800 5
30 7698 2850 1
30 7499 1600 3
30 7521 1250 4
30 7654 1250 4
30 7844 1500 2
30 7900 950 6
示例2:使用 SUM() 函数
SUM()
函数可以计算每行数据在分组内的总和。下面的示例使用 SUM()
函数来计算每个部门的销售业绩总和:
SELECT deptno, empno, sal, SUM(sal) OVER (PARTITION BY deptno) as sal_sum from emp;
解析:
PARTITION BY deptno
:按照部门编号进行分组。SUM(sal) OVER (PARTITION BY deptno)
:对于每个部门,计算所有员工的销售业绩总和。
结果:
DEPTNO EMPNO SAL SAL_SUM
------- -------------------------------- ---------- ---------- ----------
10 7839 5000 7450
10 7782 2450 7450
20 7902 3000 10875
20 7566 2975 10875
20 7788 3000 10875
20 7876 1100 10875
20 7369 800 10875
30 7698 2850 9400
30 7499 1600 9400
30 7521 1250 9400
30 7654 1250 9400
30 7844 1500 9400
30 7900 950 9400
以上就是叙述的内容,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Oracle开发之分析函数简介Over用法 - Python技术站