資源描述:
《oraclegroupby用法實(shí)例詳解》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、Groupby的語(yǔ)法Select[filed1,fild2,]聚合函數(shù)(filed),[Grouping(filed),][Grouping_id(filed1,filed2,…)]FromtablenameWherecondition[Groupby{rollup
2、cube}(filed,filed2)][havingcondition][orderbyfiled1]一、基本用法:(1)我們通過(guò)幾個(gè)例子來(lái)研究groupby的基本用法創(chuàng)建測(cè)試表SQL>createtablesales(2empidnumber,--雇員ID3depidnum
3、ber,--部門(mén)ID4areavarchar(20),--區(qū)域5salenumnumber);--銷售額?表已創(chuàng)建。?SQL>insertintosalesvalues(1,1,'china',10);SQL>insertintosalesvalues(2,1,'china',10);SQL>insertintosalesvalues(3,1,'china',10);SQL>insertintosalesvalues(3,1,'china',10);SQL>insertintosalesvalues(3,1,'china',10);SQL>
4、insertintosalesvalues(1,1,'china',10);SQL>insertintosalesvalues(2,1,'china',10);SQL>insertintosalesvalues(4,2,'china',10);SQL>insertintosalesvalues(4,2,'china',10);SQL>insertintosalesvalues(5,3,'us',10);SQL>insertintosalesvalues(5,3,'us',10);需求1,按部門(mén)統(tǒng)計(jì)銷售額(簡(jiǎn)單用法)SQL>selectdep
5、id,sum(salenum)fromsalesgroupbydepid;DEPIDSUM(SALENUM)----------------------1???????702???????203???????20需求2,按部門(mén)統(tǒng)計(jì)銷售額,并且只顯示銷售總額小于30的部門(mén)及銷售額(使用having子句)SQL>selectdepid,sum(salenum)totalnumfromsalesgroupbydepidhavingsum(salenum)<30;DEPIDSUM(SALENUM)----------------------2???
6、????203???????20注解:需求2需要使用having字名,而且在子句中不能使用別名,必須使用在select語(yǔ)句中書(shū)寫(xiě)的形式(2)Where和having的區(qū)別Wheret和having子句都用來(lái)篩選數(shù)據(jù),但是where是針對(duì)原數(shù)據(jù)進(jìn)行篩選,而having子句只是針對(duì)匯總后的結(jié)果進(jìn)行篩選,所以在需求二的例子中,想要對(duì)銷售總額進(jìn)行過(guò)濾只能使用having子句(3)使用orderby排序SQL>selectdepid,sum(salenum)fromsalesgroupbydepid;DEPIDSUM(SALENUM)--------
7、--------------1??????702??????203??????20注意觀察需求1的例子,depid是已經(jīng)按照在depid升序排列的,這是因?yàn)閛racle在做聚合統(tǒng)計(jì)的時(shí)候會(huì)首先對(duì)字段進(jìn)行排序,所以最終的結(jié)果是按照升序進(jìn)行排列的,如果orderby后跟著多個(gè)字段,默認(rèn)排序是先對(duì)第一個(gè)字段升序排序,然后再排第二個(gè)字段,以此類推,所以如果在應(yīng)用中僅僅需要長(zhǎng)序排序可以不用加orderby參數(shù),畢竟這會(huì)影響性能二、擴(kuò)展用法:擴(kuò)展用法使用下面的表進(jìn)行實(shí)驗(yàn)研究SQL>createtabletestgroup(2avarchar(5),3b
8、varchar(5),4cvarchar(5),5nnumber);建完測(cè)試表,然后插入兩條測(cè)試數(shù)據(jù)SQL>insertintotestgroupvalues('a1','b1','c1',10);SQL>insertintotestgroupvalues('a1','b1','c1',20);我們使用基本的groupby可以得到以下結(jié)果SQL>selecta,b,c,sum(n)totalfromtestgroupgroupbya,b,c;A???????B?????C????TOTAL-------------------------a
9、1?????b1????c1????30(1)使用rollup操作符Rollup意思有”卷起,匯總”的意思,他可以在使得在其括號(hào)中的字段,按從右到左的順序分別group后顯示,類