学习oracle技术,每天学一点,每天进步一点

oracle 9i分析函数参考手册 (二)

上一篇 / 下一篇  2008-06-16 17:17:27 / 个人分类:pl/sql

ROW_NUMBER
9O4K)O9n8pv,U-H&f0功能描述:返回有序组中一行的偏移量,从而可用于按特定标准排序的行号。
:pj,gWO'J0SAMPLE:下例返回每个员工再在每个部门中按员工号排序后的顺序号
#g|J"d/IoU.`0ITPUB个人空间#b~LE7N s U*Q
SELECT department_id, last_name, employee_id, ROW_NUMBER()
j6B{O1^*w$M.[0       OVER (PARTITION BY department_id ORDER BY employee_id) AS emp_idITPUB个人空间xi2FV,z8`(`&pE5R
  FROM employeesITPUB个人空间 m7d2S] {w!n
WHERE department_id < 50;ITPUB个人空间 b V1C~"a'q0d2t
ITPUB个人空间7B-W'}i6Q/ef0iU
DEPARTMENT_ID LAST_NAME                 EMPLOYEE_ID     EMP_IDITPUB个人空间$f'mhyE J5S Xl'|p
------------- ------------------------- ----------- ----------ITPUB个人空间Ph+A5@SO U
           10 Whalen                            200          1ITPUB个人空间z)\/c+RrR*H(Q
           20 Hartstein                         201          1
0Up0N u9b#O#I'r aV0           20 Fay                               202          2ITPUB个人空间+A;c#kX'J2^
           30 Raphaely                          114          1
u-oQ'kWB]+h#?%}sm0           30 Khoo                              115          2ITPUB个人空间U Q},ll5X hv
           30 Baida                             116          3
0[{T` H0           30 Tobias                            117          4
`g8lbz2~,_0           30 Himuro                            118          5ITPUB个人空间 w$[?Yc*ND:R\7lug
           30 Colmenares                        119          6ITPUB个人空间P%`McQ kVd{7`
           40 Mavris                            203          1ITPUB个人空间~;Q6w_ `

4nUD:sDbq'L0@0sd0ITPUB个人空间"T/\&OFFEUuR
STDDEV
gVx.X@s\:t8]H0功能描述:计算当前行关于组的标准偏离。(Standard Deviation)ITPUB个人空间q.T!Cvet/d
SAMPLE:下例返回部门30按雇佣日期排序的薪水值的累积标准偏离ITPUB个人空间`J`;oj)Y
ITPUB个人空间&UM4rsh%P.`U ~.N
SELECT last_name, hire_date,salary, ITPUB个人空间2E-r`+~,U5E*q'xm
         STDDEV(salary) OVER (ORDER BY hire_date) "StdDev"ITPUB个人空间B{5c/{-})s8Ipq/U
  FROM employees  ITPUB个人空间5Gc%KXT7Tx O zx
WHERE department_id = 30;ITPUB个人空间Ht'g#xC4F g

(S `(k_3S;i,RD0LAST_NAME                 HIRE_DATE      SALARY     StdDevITPUB个人空间\GL(y ?![
------------------------- ---------- ---------- ----------
2h$ZU&E n:\0Raphaely                  07-12月-94      11000          0ITPUB个人空间 Lx:qolo:f+e
Khoo                      18-5月 -95       3100 5586.14357
2X*n_ _0E8}.Q DXK0Tobias                    24-7月 -97       2800  4650.0896ITPUB个人空间'f1ac2a?w:n
Baida                     24-12月-97       2900 4035.26125
7VW]r:A6F0Himuro                    15-11月-98       2600  3649.2465ITPUB个人空间[P#Q'PB ] ASn
Colmenares                10-8月 -99       2500 3362.58829ITPUB个人空间!][#b dr#G#omO\

(ki(s3?7`0ITPUB个人空间4A FB o-X*~dtx MS
STDDEV_POP ITPUB个人空间I;Fy#w&i7r N2~
功能描述:该函数计算总体标准偏离,并返回总体变量的平方根,其返回值与VAR_POP函数的平方根相同。(Standard Deviation-Population)
#o7D#rFs!n0SAMPLE:下例返回部门20、30、60的薪水值的总体标准偏差ITPUB个人空间8Pj x6I D|p
ITPUB个人空间Xe0w4uL3[%Cc*Q
SELECT department_id, last_name, salary, ITPUB个人空间7@XM4L;s^
       STDDEV_POP(salary) OVER (PARTITION BY department_id) AS pop_std
o(W `]+a-Bt%C0  FROM employees
9fM:N$mX-D/lw5Q[0WHERE department_id in (20,30,60);
ZLget9oDe2te0ITPUB个人空间 q5_+od3\@
DEPARTMENT_ID LAST_NAME                     SALARY    POP_STDITPUB个人空间uw%P8a0wg2KaPl2x
------------- ------------------------- ---------- ----------
P!zWq Xc0           20 Hartstein                      13000       3500
*J CL0ZvJtE3m0           20 Fay                             6000       3500
%k"A g y/wR0           30 Raphaely                       11000  3069.6091ITPUB个人空间/^ nE+k+}t3_9^-U&p
           30 Khoo                            3100  3069.6091
&epKo D9w&{0           30 Baida                           2900  3069.6091ITPUB个人空间N B2P:`.^ ?+O eF
           30 Colmenares                      2500  3069.6091
w3R"C*ck0           30 Himuro                          2600  3069.6091ITPUB个人空间5|:N)M%s-Evt
           30 Tobias                          2800  3069.6091ITPUB个人空间Cwt#JI6`/wr'v4Lp
           60 Hunold                          9000 1722.32401
;{9d+ej3v8C0           60 Ernst                           6000 1722.32401
W1{ av@,^ t9c0X0           60 Austin                          4800 1722.32401ITPUB个人空间+^rY }tL
           60 Pataballa                       4800 1722.32401ITPUB个人空间 j&I6B W Rri R
           60 Lorentz                         4200 1722.32401
@DM])i.|-H&r0
LF*pCX3Rc0ITPUB个人空间Mw)~z7u2P U-R8qc
STDDEV_SAMP
tz8_r YE rN0功能描述: 该函数计算累积样本标准偏离,并返回总体变量的平方根,其返回值与VAR_POP函数的平方根相同。(Standard Deviation-Sample)ITPUB个人空间{O |a7i@
SAMPLE:下例返回部门20、30、60的薪水值的样本标准偏差
:A9y0`P0m2^+iNlF0
_!Q ^*dn1Oj L0SELECT department_id, last_name, hire_date, salary,
L,S[PH CiUfl6R0        STDDEV_SAMP(salary) OVER ITPUB个人空间(b5bnP\oR9v
        (PARTITION BY department_id ORDER BY hire_date
;U \5B(i_{$O| mVF0         ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cum_sdev ITPUB个人空间8}8sd8s znr
  FROM employees
%jzf+D&DVv[^&u0WHERE department_id in (20,30,60);ITPUB个人空间%o.QdVR#tw
ITPUB个人空间 ^5k8L8N [}E
DEPARTMENT_ID LAST_NAME                 HIRE_DATE      SALARY   CUM_SDEV
Xf5|6qc.G[0------------- ------------------------- ---------- ---------- ----------
%^\0IV r0           20 Hartstein                 17-2月 -96      13000ITPUB个人空间#EZ1]Wc?;b(?S
           20 Fay                       17-8月 -97       6000 4949.74747
Q1Z1F XD V6yV U0           30 Raphaely                  07-12月-94      11000
#W@'O&aZd v,D0           30 Khoo                      18-5月 -95       3100 5586.14357
%c4J/Y\9}L0           30 Tobias                    24-7月 -97       2800  4650.0896
@ _P(Y{~ v#A"W0           30 Baida                     24-12月-97       2900 4035.26125ITPUB个人空间~J+~9mU
           30 Himuro                    15-11月-98       2600  3649.2465
4p!N a1qE0           30 Colmenares                10-8月 -99       2500 3362.58829
1z2J N3z ~a5{,]fL0           60 Hunold                    03-1月 -90       9000ITPUB个人空间sOY {f6o
           60 Ernst                     21-5月 -91       6000 2121.32034
J2u?Q g,?/DZ0           60 Austin                    25-6月 -97       4800 2163.33077ITPUB个人空间_Z V,~ i6iJ
           60 Pataballa                 05-2月 -98       4800 1982.42276ITPUB个人空间6ew2D7~'j?+m
           60 Lorentz                   07-2月 -99       4200 1925.61678
[!cX ^tJ8Y0
.M o I4TSf6~+G6G5v%s0
*P!B*Q$n-vIl0SUM ITPUB个人空间3l-jH9A1jG(qs#}H
功能描述:该函数计算组中表达式的累积和。ITPUB个人空间 ["p|?%O A-~ j
SAMPLE:下例计算同一经理下员工的薪水累积值ITPUB个人空间)y*h&KE5?%M6G
ITPUB个人空间t(h~\IZ9o
SELECT manager_id, last_name, salary,ITPUB个人空间$J]4m2l,h e!j4@9`#\Uo
        SUM (salary) OVER (PARTITION BY manager_id ORDER BY salary
;]J C5C3o']0   RANGE UNBOUNDED PRECEDING) l_csum
%QdZU$k&GkL0    FROM employeesITPUB个人空间~-t(K/cw4^e&A$u8O
   WHERE manager_id in (101,103,108);
']AtSjVv;t0
D DQ2u RW'N,J0MANAGER_ID LAST_NAME                     SALARY     L_CSUM
{"S2{N1[9V~J0---------- ------------------------- ---------- ----------
(}R+~BG!l0       101 Whalen                          4400       4400
? vE DB0T0       101 Mavris                          6500      10900
-v0N:K a^Ox$|J0       101 Baer                           10000      20900ITPUB个人空间a!Ek'RA)v
       101 Greenberg                      12000      44900
'VMKr|1G*F!M0       101 Higgins                        12000      44900ITPUB个人空间c"YW!O&X4Q9KO%~
       103 Lorentz                         4200       4200
"Kn%@!rA @he$n0       103 Austin                          4800      13800ITPUB个人空间]H_0p!Uve?A
       103 Pataballa                       4800      13800
Cug @U$r9CQ0       103 Ernst                           6000      19800
rrH x'rhE0       108 Popp                            6900       6900
+o K8J+as ^0       108 Sciarra                         7700      14600ITPUB个人空间S2D/o dDE#Z
       108 Urman                           7800      22400ITPUB个人空间-^ qO4[+EdIR r5[~6z
       108 Chen                            8200      30600
9q'D'bsT9e n0       108 Faviet                          9000      39600
i U#p!`"I8NK7d0      
\8v9X ~'{YF5}0      
,E V;zgp&gtHv5Zw0VAR_POP
|:F#S W M.l0功能描述:(Variance Population)该函数返回非空集合的总体变量(忽略null),VAR_POP进行如下计算:ITPUB个人空间V0?gB6sKq
          (SUM(expr2) - SUM(expr)2 / COUNT(expr)) / COUNT(expr)
g XL6b2b4uO0SAMPLE:下例计算1998年每月销售的累积总体和样本变量(本例在SH用户下运行)
0H w:W @no gxL0
*J4Gr|}3b0SELECT t.calendar_month_desc,
af*L](DI0       VAR_POP(SUM(s.amount_sold))
)jV a~y-A0         OVER (ORDER BY t.calendar_month_desc) "Var_Pop",ITPUB个人空间j$i9]Yy+`
       VAR_SAMP(SUM(s.amount_sold))
Timt#qH4[#L0D0         OVER (ORDER BY t.calendar_month_desc) "Var_Samp"
2[f.z3i:K8ze)Q0  FROM sales s, times tITPUB个人空间Y3_/j:Qca;h
WHERE s.time_id = t.time_id AND t.calendar_year = 1998
2?#s%B8M x F0GROUP BY t.calendar_month_desc;ITPUB个人空间'v(F#\Nj#E n$iu/cV9V(_

,l S;Xc+i2u*ja0CALENDAR    Var_Pop   Var_SampITPUB个人空间8g%z]$u0h4l
-------- ---------- ----------
$E*_X(Q#sCt01998-01           0ITPUB个人空间/G Cy:u/nxq]$oM@
1998-02  6.1321E+11 1.2264E+12
hoA*lU ~01998-03  4.7058E+11 7.0587E+11ITPUB个人空间 yR2o'qr
1998-04  4.6929E+11 6.2572E+11
0Yn\6uA!j01998-05  1.5524E+12 1.9405E+12ITPUB个人空间2N@^r,W {.o;P*QA
1998-06  2.3711E+12 2.8453E+12ITPUB个人空间7A+Y5E7h.|*[D
1998-07  3.7464E+12 4.3708E+12
k#P eH&tJ01998-08  3.7852E+12 4.3260E+12ITPUB个人空间Z(N2h,pl
1998-09  3.5753E+12 4.0222E+12ITPUB个人空间1^W A,qx-@A
1998-10  3.4343E+12 3.8159E+12ITPUB个人空间/r @;ne2@ZK;J#_;y
1998-11  3.4245E+12 3.7669E+12
7nk(n+Q+i4Q5W01998-12  4.8937E+12 5.3386E+12ITPUB个人空间S~ P M+bP h,S ]&p

}9E/y!tgu(]8e?0J ^ S0ITPUB个人空间ct;\%R3}3[v4x#xUC(h
VAR_SAMP
.p0YpO)O4m2Y0功能描述:(Variance Sample)该函数返回非空集合的样本变量(忽略null),VAR_POP进行如下计算:
BH!^` m$[?0          (SUM(expr*expr)-SUM(expr)*SUM(expr)/COUNT(expr))/(COUNT(expr)-1)ITPUB个人空间y|_%p%N6d:NY
SAMPLE:下例计算1998年每月销售的累积总体和样本变量ITPUB个人空间?6i3kA~~T

4R AKC c1n{c~~ Q0SELECT t.calendar_month_desc,ITPUB个人空间.P6r#?6F^#Ey
        VAR_POP(SUM(s.amount_sold))
!o1AV8}#r}~0          OVER (ORDER BY t.calendar_month_desc) "Var_Pop",
6[ v#y['q0        VAR_SAMP(SUM(s.amount_sold))
1Q@KcvCd0          OVER (ORDER BY t.calendar_month_desc) "Var_Samp"
!CLc1V'us^z0  FROM sales s, times tITPUB个人空间3|5D?7s%}
WHERE s.time_id = t.time_id AND t.calendar_year = 1998
/U8xT@l;y/Y9S l1ZE0GROUP BY t.calendar_month_desc;ITPUB个人空间#JN*NB%X
ITPUB个人空间P ^:j f V%x
CALENDAR    Var_Pop   Var_Samp
b%m6gX"Z }0-------- ---------- ----------
D |J `:C!k `{0o0e01998-01           0
#K6HtmcMN3Z E01998-02  6.1321E+11 1.2264E+12
/G j,e5PAc } Y01998-03  4.7058E+11 7.0587E+11
MK)~4a,D] q01998-04  4.6929E+11 6.2572E+11
Dj*OZPnW8\?01998-05  1.5524E+12 1.9405E+12ITPUB个人空间w4^/}Ud&k S0^
1998-06  2.3711E+12 2.8453E+12
v-O#NO%C X01998-07  3.7464E+12 4.3708E+12
9SxTK4^#TP0d}01998-08  3.7852E+12 4.3260E+12
F9\f"W"Z+Q4}Em-q g01998-09  3.5753E+12 4.0222E+12ITPUB个人空间n9s B.|[
1998-10  3.4343E+12 3.8159E+12ITPUB个人空间fK.t{gY |-y.B
1998-11  3.4245E+12 3.7669E+12ITPUB个人空间 B9okl8a+|w*uTl
1998-12  4.8937E+12 5.3386E+12ITPUB个人空间D8S W2Nt!Kh @K]

/r}4Mz c0ITPUB个人空间0L^ Dc)o4u
VARIANCE ITPUB个人空间0l0q` ur
功能描述:该函数返回表达式的变量,Oracle计算该变量如下:ITPUB个人空间1U N"F"u:bn[,X
          如果表达式中行数为1,则返回0ITPUB个人空间!W w#Um ~Uz
          如果表达式中行数大于1,则返回VAR_SAMPITPUB个人空间:q-@qQS
SAMPLE:下例返回部门30按雇佣日期排序的薪水值的累积变化
8gs5oQ:^0ITPUB个人空间*y8M$_,g|N'ou5X
SELECT last_name, salary, VARIANCE(salary) ITPUB个人空间Ph+XxhL#k
        OVER (ORDER BY hire_date) "Variance"
\%rO6VJ3A0  FROM employees
f0G\/~da0WHERE department_id = 30;ITPUB个人空间sA*sl ]4e
ITPUB个人空间W;J&e}/l
LAST_NAME                     SALARY   Variance
0IC X3W f~%x O0------------------------- ---------- ----------
ox0L7[A%E0Raphaely                       11000          0ITPUB个人空间+{&Va0F\ gBq7~
Khoo                            3100   31205000ITPUB个人空间~ySo!L]*r(xDs
Tobias                          2800 21623333.3
.Bv"Y9{ luf TiW9T0Baida                           2900 16283333.3
$TJ)re3c m9|0vA0Himuro                          2600   13317000
8Xx WB+B&w0Colmenares                      2500   11307000

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-12-02  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 26110
  • 日志数: 312
  • 图片数: 2
  • 建立时间: 2007-12-11
  • 更新时间: 2008-11-28

RSS订阅

Open Toolbar