真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Oracle分析函數(shù)之開窗函數(shù)over()詳解

分析函數(shù)是什么?
分析函數(shù)是Oracle專門用于 解決復(fù)雜報(bào)表統(tǒng)計(jì)需求 的功能強(qiáng)大的函數(shù), 它可以在數(shù)據(jù)中進(jìn)行分組然后計(jì)算基于組的某種統(tǒng)計(jì)值 ,并且每一組的每一行都可以返回一個(gè)統(tǒng)計(jì)值。

公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出成武免費(fèi)做網(wǎng)站回饋大家。

          

分析函數(shù)和聚合函數(shù)的不同之處是什么?
普通的聚合函數(shù)用group by分組, 每個(gè)分組 返回一個(gè)統(tǒng)計(jì)值,而分析函數(shù)采用partition by分組,并且 每組每行 都可以返回一個(gè)統(tǒng)計(jì)值。

              

分析函數(shù)的形式
分析函數(shù)帶有一個(gè)開窗函數(shù)over(),包含三個(gè)分析子句:分組(partition by), 排序(order by), 窗口(rows) ,他們的使用形式如下:over(partition by xxx order by yyy rows between zzz)。
注:窗口子句在這里我只說rows方式的窗口,range方式和滑動(dòng)窗口也不提

    

分析函數(shù)例子(在scott用戶下模擬)

示例目的:顯示各部門員工的工資,并附帶顯示該部分的最高工資。

復(fù)制代碼
--顯示各部門員工的工資,并附帶顯示該部分的最高工資。SELECT E.DEPTNO,
       E.EMPNO,
       E.ENAME,
       E.SAL,
       LAST_VALUE(E.SAL) 
       OVER(PARTITION BY E.DEPTNO 
            ORDER BY E.SAL ROWS 
            --unbounded preceding and unbouned following針對當(dāng)前所有記錄的前一條、后一條記錄,也就是表中的所有記錄            --unbounded:不受控制的,無限的            --preceding:在...之前            --following:在...之后            BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) MAX_SAL  FROM EMP E;
復(fù)制代碼

運(yùn)行結(jié)果:

               

示例目的:按照deptno分組,然后計(jì)算每組值的總和

SELECT EMPNO,
       ENAME,
       DEPTNO,
       SAL,       SUM(SAL) OVER(PARTITION BY DEPTNO ORDER BY ENAME) max_sal  FROM SCOTT.EMP;

運(yùn)行結(jié)果:

     

示例目的:對各部門進(jìn)行分組,并附帶顯示第一行至當(dāng)前行的匯總

復(fù)制代碼
SELECT EMPNO,
       ENAME,
       DEPTNO,
       SAL,       --注意ROWS BETWEEN unbounded preceding AND current row  是指第一行至當(dāng)前行的匯總       SUM(SAL) OVER(PARTITION BY DEPTNO 
                     ORDER BY ENAME 
                     ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) max_sal  FROM SCOTT.EMP;
復(fù)制代碼

運(yùn)行結(jié)果:

   

示例目標(biāo):當(dāng)前行至最后一行的匯總

復(fù)制代碼
SELECT EMPNO,
       ENAME,
       DEPTNO,
       SAL,       --注意ROWS BETWEEN current row AND unbounded following 指當(dāng)前行到最后一行的匯總       SUM(SAL) OVER(PARTITION BY DEPTNO 
                     ORDER BY ENAME 
                     ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) max_sal  FROM SCOTT.EMP;
復(fù)制代碼

運(yùn)行結(jié)果:

   

 示例目標(biāo):當(dāng)前行的上一行(rownum-1)到當(dāng)前行的匯總

復(fù)制代碼
SELECT EMPNO,
       ENAME,
       DEPTNO,
       SAL,       --注意ROWS BETWEEN 1 preceding AND current row 是指當(dāng)前行的上一行(rownum-1)到當(dāng)前行的匯總        SUM(SAL) OVER(PARTITION BY DEPTNO 
                     ORDER BY ENAME ROWS 
                     BETWEEN 1 PRECEDING AND CURRENT ROW) max_sal  FROM SCOTT.EMP;
復(fù)制代碼

運(yùn)行結(jié)果:

    

示例目標(biāo):   當(dāng)前行的上一行(rownum-1)到當(dāng)前行的下輛行(rownum+2)的匯總     

復(fù)制代碼
SELECT EMPNO,
       ENAME,
       DEPTNO,
       SAL,       --注意ROWS BETWEEN 1 preceding AND 1 following 是指當(dāng)前行的上一行(rownum-1)到當(dāng)前行的下輛行(rownum+2)的匯總       SUM(SAL) OVER(PARTITION BY DEPTNO 
                     ORDER BY ENAME 
                     ROWS BETWEEN 1 PRECEDING AND 2 FOLLOWING) max_sal  FROM SCOTT.EMP;
復(fù)制代碼

運(yùn)行結(jié)果:


網(wǎng)站名稱:Oracle分析函數(shù)之開窗函數(shù)over()詳解
鏈接分享:http://weahome.cn/article/jdejdj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部