Oracle之数据操作__子查询_分析函数

一. 分析函数主要语法

 

传统SQL的问题:

             Oracle之数据操作__子查询_分析函数_第1张图片

 

基本语法:

             Oracle之数据操作__子查询_分析函数_第2张图片

 

组合顺序:

            Oracle之数据操作__子查询_分析函数_第3张图片

 

1. 使用PARTITION子句

SELECT did,ename,sal,
    SUM(sal) OVER (PARTITION BY did) sum 
FROM emp;

                

                     Oracle之数据操作__子查询_分析函数_第4张图片

 

 2. 不适用PARITION进行分区,直接利用OVER子句操作

SELECT did,ename,sal,
    SUM(sal) OVER () sum
FROM emp;

 

                   Oracle之数据操作__子查询_分析函数_第5张图片

 

 3. 通过PARTITION设置多个分区字段

SELECT did,ename,sal,job,
    SUM(sal) OVER (PARTITION BY did,job) sum
FROM emp;

                Oracle之数据操作__子查询_分析函数_第6张图片

 

4. 观察ORDER BY 子句

 SELECT did,ename,sal,
     RANK() OVER (PARTITION BY did ORDER BY sal DESC) rk
FROM emp

                         Oracle之数据操作__子查询_分析函数_第7张图片

# ORDER BY 子句的作用主要就是进行排序,但是现在实现的是分区内数据的排序,而这个会直接影响到最终得到查询结果

 

5. 直接利用 ORDER BY 排序所有数据

SELECT did,ename,sal,hiredate,
    SUM(sal) OVER (ORDER BY ename DESC) sum
FROM emp;

                 Oracle之数据操作__子查询_分析函数_第8张图片

 

6, ORDER BY 子句选项:

              Oracle之数据操作__子查询_分析函数_第9张图片

 

6.1 null在前

SELECT did,ename,sal,comm,
    RANK() OVER (ORDER BY comm DESC) rk,
    SUM(sal) OVER (ORDER BY comm DESC) sum
FROM emp;

                          Oracle之数据操作__子查询_分析函数_第10张图片

 

 6.2 null在后

SELECT did,ename,sal,comm,
    RANK() OVER (ORDER BY comm DESC NULLS LAST) rk,
    SUM(sal) OVER (ORDER BY comm DESC  NULLS LAST) sum
FROM emp;

                        Oracle之数据操作__子查询_分析函数_第11张图片

 

 

二. 分窗操作的使用

 

WINDOWING子句:

           Oracle之数据操作__子查询_分析函数_第12张图片

 

 

 

三. 了解基本分析函数

转载于:https://www.cnblogs.com/zhaochangbo/p/8411188.html

你可能感兴趣的:(Oracle之数据操作__子查询_分析函数)