总结归纳:Oracle-常用函数的总结_第1页
总结归纳:Oracle-常用函数的总结_第2页
总结归纳:Oracle-常用函数的总结_第3页
总结归纳:Oracle-常用函数的总结_第4页
总结归纳:Oracle-常用函数的总结_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SQL中的单记录函数1. ASCII返回与指定的字符对应的十进制数;SQL select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual;A A ZERO SPACE- - - -65 97 48 322. CHR给出整数,返回对应的字符;SQL select chr(54740) zhao,chr(65) chr65 from dual;ZH C- -赵 A3. CONCCAT连接两两个字符串;SQL selecct conncat(0010-,8888888888)|转23 高高乾竞电话 from dual;高乾竞电

2、话-0010-8888888888转234. INITTCAP返回回字符串并将将字符串的第第一个字母变变为大写;SSQL sselectt inittcap(ssmith) upp from dual;UPP-Smitth5.INSTRR(C1,CC2,I,JJ)在一个字字符串中搜索索指定的字符符,返回发现现指定的字符符的位置;CC1 被搜索索的字符串CC2 希望搜搜索的字符串串I 搜索的的开始位置,默认为1JJ 出现的位位置,默认为为1SQL seleect innstr(ooraclee tranning,rra,1,22) insstringg fromm duall;INSTRINNG

3、-96.LENGTTH返回字符符串的长度;SQL selecct namme,lenngth(nname),addr,lengtth(adddr),saal,lenngth(tto_chaar(sall) frrom gaao.nchhar_tsst;NAME LEENGTH(NAME) ADDRR LENGGTH(ADDDR) SSAL LEENGTH(TO_CHHAR(SAAL)- - - - - -高乾乾竞 3 北北京市海锭区区 6 99999.999 77.LOWERR返回字符串串,并将所有有的字符小写写SQL selecct lowwer(AaaBbCcDDd)AaBBbCcDdd

4、fromm duall;AABBCCDDD-aaabbcccdd8.UPPERR返回字符串串,并将所有有的字符大写写SQL selecct uppper(AaaBbCcDDd) uppper ffrom ddual;UPPER-AABBBCCDD9.RPAD和和LPAD(粘贴字符)RPAD 在列的右边边粘贴字符LLPAD 在在列的左边粘粘贴字符SQQL seelect lpad(rpad(gao,110,*),17,*)from dual;LPAD(RPPAD(GAAO,1-*gaoo*不够字字符则用*来来填满10.LTRIIM和RTRRIMLTRRIM 删除除左边出现的的字符串RTTRIM

5、删删除右边出现现的字符串SSQL sselectt ltriim(rtrrim( ggao qiian jiing , ), ) from dual;LTRIM(RRTRIM(-gaao qiaan jinng11.SUBSSTR(sttring,startt,counnt)取子字字符串,从sstart开开始,取coount个SSQL sselectt subsstr(1330888888888,3,8) from dual;SUBSTR(-088888888812.REPLLACE(sstringg,s1,ss2)strring 希希望被替换的的字符或变量量 s1 被被替换的字符符串s2 要

6、要替换的字符符串SQL seleect reeplacee(he llove yyou,hee,i) ffrom ddual;REPLACEE(H-i llove yyou13.SOUNNDEX返回回一个与给定定的字符串读读音相同的字字符串SQLL creeate ttable tablee1(xm varchhar(8);SQLL inssert iinto ttable11 valuues(weeatherr);SQLL inssert iinto ttable11 valuues(weether);SQL inseert innto taable1 valuees(gaoo);SQL s

7、eelect xm frrom taable1 wheree sounndex(xxm)=sooundexx(weatther);XM-weeatherrwetheer14.TRIMM(s frrom sttring)LEADIING 剪掉掉前面的字符符TRAILLING 剪剪掉后面的字字符如果不指指定,默认为为空格符 15.ABS返返回指定值的的绝对值SQQL seelect abs(1100),aabs(-1100) ffrom ddual;ABS(1000) ABSS(-1000)- -100 110016.ACOSS给出反余弦弦的值SQLL sellect aacos(-1) frro

8、m duual;ACOS(-11)-3.1411592717.ASINN给出反正弦弦的值SQLL sellect aasin(00.5) ffrom ddual;ASIN(0.5)-.52355987818.ATANN返回一个数数字的反正切切值SQL seleect attan(1) fromm duall;ATAN(1)-.78539981619.CEILL返回大于或或等于给出数数字的最小整整数SQL seleect ceeil(3.14159927) ffrom ddual;CEIL(3.14159927)-420.COS返返回一个给定定数字的余弦弦SQL selecct coss(-3.

9、114159227) frrom duual;COS(-3.14159927)-1121.COSHH返回一个数数字反余弦值值SQL selecct cossh(20) fromm duall;COSH(200)-242588259822.EXP返返回一个数字字e的n次方方根SQL seleect exxp(2),exp(11) froom duaal;EXP(2) EXP(11)- -7.38990561 2.7188281823.FLOOOR对给定的的数字取整数数SQL selecct flooor(23345.677) froom duaal;FLOOR(22345.667)-234552

10、4.LN返回回一个数字的的对数值SQQL seelect ln(1),ln(22),ln(2.71882818) fromm duall;LN(1) LLN(2) LN(2.71828818)- - -0 .6693147718 .999999999925.LOG(n1,n22)返回一个个以n1为底底n2的对数数 SQL seleect loog(2,11),logg(2,4) fromm duall;LOG(2,11) LOGG(2,4)- -00 226.MOD(n1,n22)返回一个个n1除以nn2的余数SSQL sselectt mod(10,3),mod(3,3),mod(22,3)

11、 ffrom ddual;MOD(10,3) MOOD(3,33) MODD(2,3)- - -11 0 227.POWEER返回n11的n2次方方根SQL seleect poower(22,10),powerr(3,3) fromm duall;POWER(22,10) POWERR(3,3)- -10224 2728.ROUNND和TRUUNC按照指指定的精度进进行舍入SQQL seelect roundd(55.55),rouund(-555.4),truncc(55.55),truunc(-555.5) from dual;ROUND(555.5) ROUNDD(-55.4) TRR

12、UNC(555.5) TRUNCC(-55.5)- - - -56 -55 555 -5529.SIGNN取数字n的的符号,大于于0返回1,小于0返回回-1,等于于0返回0SSQL sselectt signn(123),signn(-1000),siggn(0) from dual;SIGN(1223) SIIGN(-1100) SSIGN(00)- - -1 -11 030.SIN返返回一个数字字的正弦值SSQL sselectt sin(1.570079) ffrom ddual;SIN(1.557079)-131.SIGHH返回双曲正正弦的值SQQL seelect sin(220),

13、siinh(200) froom duaal;SIN(20) SINHH(20)- -.9912945525 2442582559832.SQRTT返回数字nn的根SQLL sellect ssqrt(664),sqqrt(100) froom duaal;SQRT(644) SQRRT(10)- -88 3.16622777733.TAN返返回数字的正正切值SQLL sellect ttan(200),tann(10) from dual;TAN(20) TAN(10)- -2.223716009 .644836088334.TANHH返回数字nn的双曲正切切值SQL seleect taa

14、nh(200),tann(20) from dual;TANH(200) TANN(20)- -1 2.2377160935.TRUNNC按照指定定的精度截取取一个数SQQL seelect truncc(124.1666,-2) ttrunc11,trunnc(1244.166666,2) from dual;TRUNC1 TRUNCC(124.166666,2)- -100 124.11636.ADD_MONTHHS增加或减减去月份SQQL seelect to_chhar(addd_monnths(tto_datte(1999912,yyyyymmm),2),yyyymmm) frrom

15、 duual;TO_CHA-2000002SQL seleect too_charr(add_monthhs(to_date(1999112,yyyyymm),-2),yyyyymmm) froom duaal;TO_CHA-199911037.LASTT_DAY返返回日期的最最后一天SQQL seelect to_chhar(syysdatee,yyyyy.mm.ddd),too_charr(syssdate)+1,yyyyy.mmm.dd) from dual;TO_CHARR(SY TTO_CHAAR(S- -2004.05.099 20044.05.110SQL sselectt la

16、stt_day(sysdaate) ffrom ddual;LAST_DAAY(S-311-5月 -0438.MONTTHS_BEETWEENN(datee2,datte1)给出出date22-datee1的月份SSQL sselectt montths_beetweenn(19-112月-19999,199-3月-11999) mon_bbetweeen froom duaal;MON_BETTWEEN-9SQLsselecttmonthhs_bettween(to_daate(20000.055.20,yyyyy.mmm.dd),to_ddate(22005.005.20,yyyy.mm.

17、ddd) moon_bettw froom duaal;MON_BETTW-6039.NEW_TIME(date,this,that)给出在thhis时区=otherr时区的日期期和时间SQQL seelect to_chhar(syysdatee,yyyyy.mm.ddd hh224:mi:ss) bbj_timme,to_char(new_ttime2 (sysddate,PPDT,GMMT),yyyyy.mmm.dd hhh24:mmi:ss) los_anglees froom duaal;BJ_TIMEE LOS_ANGLEES- -2004.05.099 11:005:32 200

18、4.05.099 18:005:3240.NEXTT_DAY(date,day)给给出日期daate和星期期x之后计算算下一个星期期的日期SQQL seelect next_day(18-5月月-20011,星期期五) nnext_dday frrom duual;NEXT_DAAY-25-55月 -01141.SYSDDATE用来来得到系统的的当前日期SSQL sselectt to_cchar(ssysdatte,dd-mm-yyyyy daay) frrom duual;TO_CHARR(SYSDDATE,-09-005-20004 星期日日truncc(datee,fmt)按照给出的的

19、要求将日期期截断,如果果fmt=mmi表示保留留分,截断秒秒SQL selecct to_char(truncc(sysddate,hhh),yyyyy.mmm.dd hhh24:mmi:ss) hh,22 to_cchar(ttrunc(sysdaate,mii),yyyyy.mm.dd hhh24:mii:ss) hhmm from dual;HH HHMMM- -22004.005.09 11:000:00 22004.005.09 11:177:0042.CHARRTOROWWID将字符符数据类型转转换为ROWWID类型SSQL sselectt rowiid,rowwidtoccha

20、r(rrowid),enamme froom scoott.emmp;ROWID RROWIDTTOCHARR(ROWIID) ENNAME- - -AAAAAfKAACCAAAAEEqAAA AAAAffKAACAAAAAEqqAAA SSMITHAAAAAfKKAACAAAAAEqAAAB AAAAAfKAAACAAAAAEqAAAB ALLLENAAAAAfKAAACAAAAAEqAACC AAAAAfKAACCAAAAEEqAAC WARDAAAAAfKKAACAAAAAEqAAAD AAAAAfKAAACAAAAAEqAAAD JONNES43.CONVVERT(cc,dsett,s

21、sett)将源字符符串 sseet从一个语语言字符集转转换到另一个个目的dseet字符集SSQL sselectt convvert(sstrutzz,we8hhp,f7ddec) conveersionn froom duaal;conver-struttz44.HEXTTORAW将将一个十六进进制构成的字字符串转换为为二进制45.RAWTTOHEXTT将一个二进进制构成的字字符串转换为为十六进制46.ROWIIDTOCHHAR将ROOWID数据据类型转换为为字符类型47.TO_CCHAR(ddate,fformatt)SQL seleect too_charr(sysddate,yyyyy

22、/mmm/dd hh24:mi:sss) froom duaal;TO_CHARR(SYSDDATE,YYY-2004/05/099 21:114:4148.TO_DDATE(sstringg,formmat)将字字符串转化为为ORACLLE中的一个个日期49.TO_MMULTI_BYTE将将字符串中的的单字节字符符转化为多字字节字符SQQL seelect to_muulti_bbyte(高高) froom duaal;TO-高50.TO_NNUMBERR将给出的字字符转换为数数字SQL seleect too_numbber(19999) yyear ffrom ddual;YEAR-19

23、99951.BFILLENAMEE(dir,file)指定一个外外部二进制文文件SQLinserrt intto fille_tb11 valuues(bffilenaame(loob_dirr1,imaage1.ggif);52.CONVVERT(xx,descc,sourrce)将xx字段或变量量的源souurce转换换为desccSQL selecct sidd,seriial#,uusernaame,deecode(commaand,2 0,nonne,3 22,inseert,4 3,5 sselectt,6 6,updatte,7 77,deleete,8 8,droop,9 oo

24、ther) cmd from v$sesssion wheree typee!=bacckgrouund;SID SERRIAL# USERNNAME CCMD- - - -11 1 noone2 11 nonee3 1 nnone4 1 nonne5 1 none66 1 noone7 11275 nnone8 1275 none99 20 GGAO seelect110 40 GAO nnone53.DUMPP(s,fmmt,staart,leength)DUMP函函数以fmtt指定的内部部数字格式返返回一个VAARCHARR2类型的值值SQL col ggloball_namee for

25、 a30SQQL cool dummp_strring ffor a550SQL set lin 2200SQLL sellect ggloball_namee,dumpp(globbal_naame,10017,8,5) duump_sttring from globaal_namme;GLOBAL_NAME DUMP_STRINNG- -ORAACLE.WWORLD Typ=11 Len=12 ChharactterSett=ZHS116GBK: W,O,R,L,DD54.EMPTTY_BLOOB()和EEMPTY_CLOB()这两个函函数都是用来来对大数据类类型字段进行行初始化操作作的函

26、数55.GREAATEST返返回一组表达达式中的最大大值,即比较较字符的编码码大小.SQQL seelect greattest(AAA,AB,AC) ffrom ddual;GR-ACSSQL sselectt greaatest(啊,安,天天) froom duaal;GR-天56.LEASST返回一组组表达式中的的最小值 SSQL sselectt leasst(啊,安安,天) ffrom ddual;LE-啊57.UID返返回标识当前前用户的唯一一整数SQLL shoow useerUSERR 为GAAOSQLL sellect uusernaame,usser_idd fromm d

27、ba_userss wherre useer_id=uid;USERNAMME USEER_ID- -GGAO 25558.USERR返回当前用用户的名字SSQL sselectt userr fromm duall;USER-GAOO59.USERREVN返回回当前用户环环境的信息,opt可以以是:ENTTRYID,SESSIIONID,TERMIINAL,IISDBA,LABLEE,LANGGUAGE,CLIENNT_INFFO,LANNG,VSIIZEISDDBA 查看看当前用户是是否是DBAA如果是则返返回trueeSQL selecct useerenv(isdbaa) froom

28、duaal;USEREN-FALSEESQL selecct useerenv(isdbaa) froom duaal;USEREN-TRUESEESSIONN返回会话标标志SQL seleect usserenvv(sesssionidd) froom duaal;USERENVV(SESSSIONIDD)-152ENTTRYID返返回会话人口口标志SQLL sellect uuserennv(enttryid) fromm duall;USERENVV(ENTRRYID)-0INSTAANCE返回回当前INSSTANCEE的标志SQQL seelect usereenv(innstancc

29、e) frrom duual;USERENVV(INSTTANCE)-11LANGUUAGE返回回当前环境变变量SQL seleect usserenvv(langguage) fromm duall;USERENVV(LANGGUAGE)-SIMMPLIFIIED CHHINESEE_CHINNA.ZHSS16GBKKLANG返回回当前环境的的语言的缩写写SQL selecct useerenv(lang) fromm duall;USERENVV(LANGG)-ZHHSTERMMINAL返返回用户的终终端或机器的的标志SQLL sellect uuserennv(terrminall) f

30、room duaal;USERENVV(TERMMINA-GGAOVSIIZE(X)返回X的大大小(字节)数SQL seleect vssize(uuser),user from dual;VSIZE(UUSER) USER- -6 SYYSTEM60.AVG(DISTIINCT|AALL)alll表示对所所有的值求平平均值,diistincct只对不同同的值求平均均值SQLWWKS ccreatee tablle tabble3(xxm varrchar(8),saal nummber(77,2);语句已处理理。SQLWWKS iinsertt intoo tablle3 vaalues(g

31、ao,11111.111);SQQLWKS inseert innto taable3 valuees(gaoo,11111.11);SQLWKKS innsert into tablee3 vallues(zzhu,55555.555);SQLLWKS commiit;SQL seelect avg(ddistinnct saal) frrom gaao.tabble3;AVG(DISSTINCTTSAL)-3333.33SQL seelect avg(aall saal) frrom gaao.tabble3;AVG(ALLLSAL)-2592.5961.MAX(DISTIINCT|AAL

32、L)求最最大值,ALLL表示对所所有的值求最最大值,DIISTINCCT表示对不不同的值求最最大值,相同同的只取一次次SQL selecct maxx(disttinct sal) from scottt.emp;MAX(DISSTINCTTSAL)-500062.MIN(DISTIINCT|AALL)求最最小值,ALLL表示对所所有的值求最最小值,DIISTINCCT表示对不不同的值求最最小值,相同同的只取一次次SQL selecct minn(all sal) from gao.ttable33;MIN(ALLLSAL)-1111.1163.STDDDEV(diistincct|alll)

33、求标准差差,ALL表表示对所有的的值求标准差差,DISTTINCT表表示只对不同同的值求标准准差SQL seleect sttddev(sal) from scottt.emp;STDDEV(SAL)-1182.5032SQL seelect stddeev(disstinctt sal) fromm scottt.empp;STDDEV(DISTIINCTSAAL)-12299.95164.VARIIANCE(DISTIINCT|AALL)求协协方差 SQL seelect variaance(ssal) ffrom sscott.emp;VARIANCCE(SALL)-113983113.

34、965.GROUUP BY主主要用来对一一组数进行统统计SQL seleect deeptno,countt(*),ssum(saal) frrom sccott.eemp grroup bby depptno;DEPTNO COUNTT(*) SSUM(SAAL)- - -10 33 8750020 5 10875530 6 940066.HAVIING对分组组统计再加限限制条件SQQL seelect deptnno,couunt(*),sum(sal) from scottt.emp groupp by ddeptnoo haviing coount(*)=5;DEPTNO COUNTT

35、(*) SSUM(SAAL)- - -20 55 10877530 66 94000SQL selecct depptno,ccount(*),suum(sall) froom scoott.emmp havving ccount(*)=55 grouup by deptnno ;DEPTNO COUNTT(*) SSUM(SAAL)- - -20 55 10877530 66 9400067.ORDEER BY用用于对查询到到的结果进行行排序输出SSQL sselectt depttno,enname,ssal frrom sccott.eemp orrder bby depptno,ssa

36、l deesc;DEPTNO ENAMEE SAL- - -110 KINNG 5000010 CCLARK 2450110 MILLLER 11300200 SCOTTT 3000020 FFORD 33000200 JONEES 2977520 ADAAMS 1110020 SMITHH 800330 BLAAKE 2885030 ALLENN 1600030 TUURNER 1500330 WARRD 1255030 MMARTINN 1250030 JAAMES 9950 68. pl/sql中的的case语语句select (caase when DUMMMY=XX tthen 0

37、else 1 end) ass fllag from duaal; case的第11种用法:ccase ccol whhen aa theen 1whhen bb theen 2ellse 0 end这种种用法跟deecode一一样没什么区区别case的第22种用法:ccase wwhen sscore =60 annd scoore =700 and scoree exppr1为NUULL,返回回expr22;不为NUULL,返回回expr11。注意两者者的类型要一一致 NVLL2 (exxpr1, expr22, exppr3) -exprr1不为NUULL,返回回expr22;为NULL

38、L,返回eexpr3。eexpr2和和expr33类型不同的的话,exppr3会转换换为exprr2的类型 NULLIIF (exxpr1, expr22) -相相等返回NUULL,不等等返回exppr1Oracle分分析函数参考考手册 =作者者: xsbb(urllhttpp:/xssb.itppub.neet)/uurl发表表于:20006.03.01 122:22分类类: DW&BI 出处处:httpp:/xssb.itppub.neet/posst/4199/330228- Oraclle从8.11.6开始提提供分析函数数,分析函数数用于计算基基于组的某种种聚合值,它它和聚合函数数的不

39、同之处处是对于每个个组返回多行行,而聚合函函数对于每个个组只返回一一行。常用的分析函数数如下所列:row_nnumberr() ovver(paartitiion byy . orderr by .)raank() over(partiition by . ordder byy .)densee_rankk() ovver(paartitiion byy . orderr by .)coount() overr(parttitionn by . orrder bby .)max() oveer(parrtitioon by . oorder by .)minn() ovver(paartiti

40、ion byy . orderr by .)suum() oover(ppartittion bby . ordeer by .)aavg() over(partiition by . ordder byy .)firstt_valuue() oover(ppartittion bby . ordeer by .)llast_vvalue() oveer(parrtitioon by . oorder by .)lagg() ovver(paartitiion byy . orderr by .)leead() over(partiition by . ordder byy .) 下面例例子中

41、使用的的表来自Orracle自自带的HR用用户下的表,如如果没有安装装该用户,可可以在SYSS用户下运行行$ORACCLE_HOOME/deemo/scchema/humann_resoourcess/hr_mmain.ssql来创建建。除本文内容外,你你还可参考:ROLLUUP与CUBBE urrlhtttp:/xxsb.ittpub.nnet/poost/4119/291159/uurl分析析函数使用例例子介绍:urlhhttp:/post/419/444634/url本文如果未指明明,缺省是在在HR用户下下运行例子。开窗函数的的理解:开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口

42、大小可能会随着行的变化而变化,举例如下:over(order by salary) 按照salary排序进行累计,order by是个默认的开窗函数over(partition by deptno)按照部门分区over(order by salary range between 50 preceding and 150 following)每行对应的数据窗口是之前行幅度值不超过50,之后行幅度值不超过150over(order by salary rows between 50 preceding and 150 following)每行对应的数据窗口是之前50行,之后150行over(ord

43、er by salary rows between unbounded preceding and unbounded following)每行对应的数据窗口是从第一行到最后一行,等效:over(order by salary range between unbounded preceding and unbounded following)主要参考资料:expeert onne-on-one Tom KKyte OOraclee9i SQQL Refferencce第6章章 ohwww 22007-33-12 009:19 续70。AVG 功能描述:用于计算一一个组和数据据窗口内表达达式的平

44、均值值。SAMPPLE:下面面的例子中列列c_mavvg计算员工工表中每个员员工的平均薪薪水报告,该该平均值由当当前员工和与与之具有相同同经理的前一一个和后一个个三者的平均均数得来;SELECT managger_idd, lasst_namme, hiire_daate, ssalaryy,AVG(salarry) OVVER (PPARTITTION BBY mannager_id ORRDER BBY hirre_datte ROWWS BETTWEEN 1 PREECEDINNG ANDD 1 FOOLLOWIING) AAS c_mmavgFRROM emmployeees;MANA

45、GERR_ID LLAST_NNAME HHIRE_DDATE SSALARYY C_MAAVG- - - - -100 KKochhaar 21-SEP-889 170000 1770001000 De Haan 13-JAAN-93 170000 150000100 Raphaaely 007-DECC-94 111000 119666.66677100 KKaufliing 011-MAY-95 79900 100633.333331000 Harrtsteiin 17-FEB-996 130000 96633.3333331000 Weiiss 188-JUL-96 80000 111

46、666.666671000 Russsell 01-OCCT-96 140000 118333.3333371。CORRR 功能描述述:返回一对对表达式的相相关系数,它它是如下的缩缩写:COVVAR_POOP(exppr1,exxpr2)/STDDEEV_POPP(exprr1)*STTDDEV_POP(eexpr2)从统计上上讲,相关性性是变量之间间关联的强度度,变量之间间的关联意味味着在某种程程度上一个变变量的值可由由其它的值进进行预测。通通过返回一个个-11之之间的一个数数, 相关系系数给出了关关联的强度,00表示不相关关。SAMPPLE:下例例返回19998年月销售售收入和月单单位销售

47、的关关系的累积系系数(本例在在SH用户下下运行)SELECT t.callendarr_montth_nummber,CCORR (SUM(ss.amouunt_soold), SUM(ss.quanntity_sold)OVERR (ORDDER BYY t.caalendaar_monnth_nuumber) as CCUM_COORRFROOM salles s, timees tWHHERE ss.timee_id = t.tiime_idd AND calenndar_yyear = 19988GROUPP BY tt.caleendar_monthh_numbberORDDER B

48、YY t.caalendaar_monnth_nuumber;CALENDAAR_MONNTH_NUUMBER CUM_CCORR- -12 13 .994300938244 .852204087755 .884665222046 .871225062887 .911002988038 .917555639999 .9200154355610 .867200251111 .8444864766512 .903544266272。COVAAR_POPP 功能描述:返回一对表表达式的总体体协方差。SSAMPLEE:下例CUUM_COVVP返回定价价和最小产品品价格的累积积总体协方差差SELECT

49、produuct_idd, suppplierr_id,CCOVAR_POP(llist_pprice, min_pricee) OVEER (ORRDER BBY prooduct_id, ssuppliier_idd) AS CUM_CCOVP,CCOVAR_SAMP(list_pricee, minn_pricce)OVEER (ORRDER BBY prooduct_id, ssuppliier_idd) AS CUM_CCOVS FFROM pproducct_infformattion ppWHEREE cateegory_id = 29ORDDER BYY prodduct_ii

50、d, suupplieer_id;PRODUCTT_ID SSUPPLIIER_IDD CUM_COVP CUM_CCOVS- - - -17774 1033088 001775 1030887 14773.25 2946.517944 1030096 17702.777778 22554.11666711825 11030933 19266.25 22568.33333322004 11030866 15911.4 19989.2552005 1030886 15112.5 1181524416 1003088 1475.979599 17211.976119.73。COVAAR_SAMMP

51、 功能描述:返回一对表表达式的样本本协方差SAAMPLE:下例CUMM_COVSS返回定价和和最小产品价价格的累积样样本协方差SELECT produuct_idd, suppplierr_id,CCOVAR_POP(llist_pprice, min_pricee) OVEER (ORRDER BBY prooduct_id, ssuppliier_idd) AS CUM_CCOVP,CCOVAR_SAMP(list_pricee, minn_pricce)OVEER (ORRDER BBY prooduct_id, ssuppliier_idd) AS CUM_CCOVS FFROM pp

52、roducct_infformattion ppWHEREE cateegory_id = 29ORDDER BYY prodduct_iid, suupplieer_id;PRODUCTT_ID SSUPPLIIER_IDD CUM_COVP CUM_CCOVS- - - -17774 1033088 001775 1030887 14773.25 2946.517944 1030096 17702.777778 22554.11666711825 11030933 19266.25 22568.33333322004 11030866 15911.4 19989.2552005 10308

53、86 15112.5 1181524416 1003088 1475.979599 17211.97611974。COUNNT 功能描述:对一组内发发生的事情进进行累积计数数,如果指定定*或一些非非空常数,ccount将将对所有行计计数,如果指指定一个表达达式,couunt返回表表达式非空赋赋值的计数,当当有相同值出出现时,这些些相等的值都都会被纳入被被计算的值;可以使用DDISTINNCT来记录录去掉一组中中完全相同的的数据后出现现的行数。SSAMPLEE:下面例子子中计算每个个员工在按薪薪水排序中当当前行附近薪薪水在n-50,n+150之之间的行数,nn表示当前行行的薪水例如如,Phill

54、tankeer的薪水22200,排排在他之前的的行中薪水大大于等于22200-500的有1行,排排在他之后的的行中薪水小小于等于222001550的行没有有,所以coount计数数值cnt33为2(包括括自己当前行行);cntt2值相当于于小于等于当当前行的SAALARY值值的所有行数数SELECT last_name, salaary, CCOUNT(*) OVVER () AS ccnt1,CCOUNT(*) OVVER (OORDER BY saalary) AS ccnt2,CCOUNT(*) OVVER (OORDER BY saalary RANGEE BETWWEEN 550 P

55、REECEDINNGAND 150 FFOLLOWWING) AS cnnt3 FRROM emmployeees;LAST_NAAME SAALARY CNT1 CNT2 CNT3- - - - -Ollson 22100 1107 1 3Markkle 22200 1007 3 22Philttankerr 22000 107 3 2Laandry 2400 107 55 8Geee 24000 107 5 8Coolmenaares 22500 1107 111 10Paatel 22500 1107 111 10.75。CUMEE_DISTT 功能描述:计算一行在在组中的相对对位置,C

56、UUME_DIIST总是返返回大于0、小小于或等于11的数,该数数表示该行在在N行中的位位置。例如,在一个3行的组中,返回的累计分布值为1/3、2/3、3/3SAMPLE:下例中计算每个工种的员工按薪水排序依次累积出现的分布百分比SELECT job_iid, laast_naame, ssalaryy, CUMME_DISST() OOVER (PARTIITION BY joob_id ORDERR BY ssalaryy) AS cume_distFFROM eemployyees WWHERE job_iid LIKKE PUU%;JOB_ID LAST_NAME SALARRY CU

57、MME_DISST- - - -PPU_CLEERK Coolmenaares 22500 .2PU_CCLERK Himurro 26000 .4PPU_CLEERK Toobias 2800 .6PU_CLERKK Baidda 29000 .8PPU_CLEERK Khhoo 31100 1PPU_MANN Raphhaely 110000 176。DENSSE_RANNK 功能描述:根据ORDDER BYY子句中表达达式的值,从从查询返回的的每一行,计计算它们与其其它行的相对对位置。组内内的数据按OORDER BY子句排排序,然后给给每一行赋一一个号,从而而形成一个序序列,该序列列从1

58、开始,往往后累加。每每次ORDEER BY表表达式的值发发生变化时,该该序列也随之之增加。有同同样值的行得得到同样的数数字序号(认认为nulll时相等的)。密密集的序列返返回的时没有有间隔的数SSAMPLEE:下例中计计算每个员工工按部门分区区再按薪水排排序,依次出出现的序列号号(注意与RRANK函数数的区别)SELECT d.deppartmeent_idd , e.last_name, e.saalary, DENSSE_RANNK() OOVER (PARTIITION BY e.deparrtmentt_id OORDER BY e.salarry) ass drannkFROMM e

59、mplloyeess e, ddeparttmentss dWHEERE e.deparrtmentt_id = d.deepartmment_iidAND d.deppartmeent_idd IN (60, 90); DEPARTMMENT_IID LASST_NAMME SALLARY DDRANK- - - -60 Loorentzz 42000 160 Austiin 48000 2600 Pataaballaa 48000 260 Ernstt 60000 360 Hunolld 90000 4900 Kochhhar 117000 190 DDe Haaan 170000 199

60、0 Kinng 240000 277。FIRSST 功能描述:从DENSSE_RANNK返回的集集合中取出排排在最前面的的一个值的行行(可能多行行,因为值可可能相等),因因此完整的语语法需要在开开始处加上一一个集合函数数以从中取出出记录SAMMPLE:下下面例子中DDENSE_RANK按按部门分区,再再按佣金coommisssion_ppct排序,FFIRST取取出佣金最低低的对应的所所有行,然后后前面的MAAX函数从这这个集合中取取出薪水最低低的值;LAAST取出佣佣金最高的对对应的所有行行,然后前面面的MIN函函数从这个集集合中取出薪薪水最高的值值SELECCT lasst_namme,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论