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

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

Oracle增強(qiáng)型分組函數(shù)-創(chuàng)新互聯(lián)

ROLLUP()函數(shù)是對(duì)于GROUP BY 分組統(tǒng)計(jì)的功能擴(kuò)展,可以實(shí)現(xiàn)分組統(tǒng)計(jì)求和的效果。

成都創(chuàng)新互聯(lián)專注于城廂企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站定制開發(fā)。城廂網(wǎng)站建設(shè)公司,為城廂等地區(qū)提供建站服務(wù)。全流程按需定制制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

下面我們開始準(zhǔn)備我們的試驗(yàn)的環(huán)境

--創(chuàng)建新表employee_salary,存儲(chǔ)數(shù)據(jù)來(lái)自用戶hr.employees

SQL>CREATE TABLE employee_salaryASSELECT E.FIRST_NAME,E.JOB_ID,E.MANAGER_ID,E.SALARYFROM HR.EMPLOYEES EWHERE E.JOB_ID='IT_PROG';
--查看新創(chuàng)建的表

SQL>SELECT *FROM employee_salary;

--顯示效果如下

FIRST_NAME    JOB_ID      MANAGER_ID    SALARY

-------------------- ---------- --------------------------------

Alexander       IT_PROG     102         9000.00

Bruce       IT_PROG       103      6000.00

David       IT_PROG       103         4800.00

Valli        IT_PROG       103         4800.00

Diana       IT_PROG       103         4200.00

--首先按照J(rèn)OB_ID進(jìn)行分組,查看salary和

SQL>SELECT sa.job_id,SUM(sa.salary) FROM employee_salary saGROUP BY sa.job_id;

--顯示效果如下

JOB_ID      SUM(SA.SALARY)

---------- -----------------------

IT_PROG         28800

--按照MANAGER_ID進(jìn)行分組,查看salary和

SELECT sa.manager_id,SUM(sa.salary)FROM employee_salary saGROUP BY sa.manager_id;

--顯示效果如下

MANAGER_ID   SUM(SA.SALARY)

---------- ----------------------------

      102            9000

   103           19800

--我們使用ROLLUP函數(shù)看看是什么效果

SELECT sa.job_id,sa.manager_id,SUM(sa.salary)FROM employee_salary saGROUP BY ROLLUP(sa.job_id,sa.manager_id);

--顯示效果如下

JOB_ID     MANAGER_ID  SUM(SA.SALARY)

---------- ---------- --------------------------------

IT_PROG       102          9000

IT_PROG       103         19800

IT_PROG                     28800

                  28800

說(shuō)明:ROLLUP解析過(guò)程,以ROLLUP(a,b)為例

ROLLUP(a,b)== GROUP(a,b) UNION ALL GROUP(a) UNIONALL GROUP()

即:解析順序是從右至左,顯示按照a,b分組,接下來(lái)是按照a分組,最后是對(duì)全表分組;

上面ROLLUP (sa.job_id,sa.manager_id)等同下面UNION ALL的集合操作

SELECT sa.job_id,sa.manager_id,SUM(sa.salary)FROM employee_salary sa

GROUP BY sa.job_id,sa.manager_id

UNION ALL

SELECT sa.job_id,NULL,SUM(sa.salary) FROM employee_salary sa

GROUP BY sa.job_id

UNION ALL

SELECT NULL,NULL,SUM(sa.salary) FROM employee_salary saGROUP BY()

ORDER BY1,2;

--顯示效果如下

JOB_ID     MANAGER_ID  SUM(SA.SALARY)

---------- ---------- --------------------------------

IT_PROG       102         9000

IT_PROG       103        19800

IT_PROG               28800

                     28800

說(shuō)明:雖然最后展示的效果是相同的,但是ROLLUP()函數(shù)的執(zhí)行效率要比UNION ALL的效率要高、要快。

ROLLUP(A,B,C)是在執(zhí)行組合操作,無(wú)順序,組合公式是(n+1),當(dāng)n=3時(shí),組合結(jié)果就是有4個(gè)。

ROLLUP()中的參數(shù)位置不同,得出的結(jié)果可能不一樣!

在理解ROLLUP的基礎(chǔ)上再來(lái)理解CUBE()就比較容易,ROLLUP()在執(zhí)行組合操作,CUBE()就是在執(zhí)行排序動(dòng)作,從左至右,排序公式是2N次方。

CUBE(A,B,C)==GROUP BY (A,B,C) UNION ALL GROUP BY (A,B) UNION ALL GROUP BY (A,C) UNION ALL GROUPBY (A) UNION ALL GROUP BY (B) UNION ALL GROUP BY (C) UNION ALL GROUP BY ()

例如:執(zhí)行下列語(yǔ)句

SQL> SELECT sa.job_id,sa.manager_id,SUM(sa.salary)FROM employee_salary saGROUP BY CUBE(sa.job_id,sa.manager_id);

--顯示效果如下

JOB_ID    MANAGER_ID SUM(SA.SALARY)

---------- ---------- -----------------------------

                                          28800

           102                  9000

           103         19800

IT_PROG                28800

IT_PROG       102          9000

IT_PROG     103          19800

6 rows selected

上面的語(yǔ)句等同執(zhí)行下列語(yǔ)句

SQL>SELECT sa.job_id,sa.manager_id,SUM(sa.salary)FROM employee_salary saGROUP BY (sa.job_id,sa.manager_id)

UNION ALL

SELECT sa.job_id,NULL,SUM(sa.salary)FROM employee_salary sa

GROUP BY (sa.job_id)

UNION ALL

SELECT NULL,sa.manager_id,SUM(sa.salary)FROM employee_salary sa

GROUP BY (sa.manager_id)

UNION ALL

SELECT NULL,NULL,SUM(sa.salary)FROM employee_salary sa

GROUPBY ();

關(guān)于GROUPING

GROUPING(A)用于判斷對(duì)于分組后的列是否是空值NULL,返回值有0和1兩個(gè)值,1表示,該列為空——NULL,這個(gè)NULL值是因?yàn)榉纸M時(shí)產(chǎn)生,否則則為0;

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


當(dāng)前標(biāo)題:Oracle增強(qiáng)型分組函數(shù)-創(chuàng)新互聯(lián)
分享URL:http://weahome.cn/article/jesdd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部