用PL/SQL画直方图
上一篇 / 下一篇 2008-08-01 16:00:56 / 个人分类:oracle 数据库技术
SQL> COL Time FORMAT A7
!N;H0_,rv4|;Ih0
:?2[#|3{h%G-BI0ITPUB个人空间7Fh^gIu
SQL> SELECT LPAD(DECODE(TIME,TO_CHAR(SYSDATE,'HH24'),'NOW: '||TO_CHAR(TIME),TO_CHAR(TIME)),7,' ') AS "Time",
e4l8d(v W?0ITPUB个人空间oE)]pc { grd}+[
ITPUB个人空间%kl7u!I3?
2 SUBSTR('|'||LPAD('> '||CNT,CEIL(CNT/A.TOTAL*300)+LENGTH(TO_CHAR(CNT))+1,'-'),1,35) AS " Count per hour" ITPUB个人空间^
vj `5c%`i
;kD$|%~!p0ITPUB个人空间 CL_F-?
f{C
3 FROM MV_TIME_STAT,(SELECT SUM(CNT) AS TOTAL FROM MV_TIME_STAT) A;
8|)H Kb:C0
#e ZJ7VqN/Qm&Z4O5~0
NbrVQ#j:z B9y0COL Time CLEAR
————————————————————————————
CREATE OR REPLACE PROCEDURE HISTOGRAPH(HEIGHT NUMBER DEFAULT 15) AS ITPUB个人空间0d }u&Lj;Lf
ITPUB个人空间]-MN Q1@Q&t5TM/h.d
ITPUB个人空间S#^8f-UU J
MAX_ONE NUMBER;ITPUB个人空间a7?%km4K?sz
ITPUB个人空间&z"lTVr.a:V:M
ITPUB个人空间c-a;k{EjY"K
STR_LINE VARCHAR(120);
J6DV!]
j
P0
u!uhKmh9dHI0ITPUB个人空间#P"j"U}AhdZ
STR_TEMP VARCHAR(120);
#P]
f+LOhlr0
,N|lr&kV#v&Mv0
%`6C,B7yC"r%yW0 I NUMBER;ITPUB个人空间| Cj8GMN
Iy0hL7Lm0
Y5g4['eVZg0BEGINITPUB个人空间*gU%B.{IS\
1xv*as-[/kD O0ITPUB个人空间#]u8X!H-VE ~2Q
DBMS_OUTPUT.PUT_LINE(LPAD('^',14,' '));ITPUB个人空间,U?+MTj%r*Gvv
2j6BeJ4@6M/|+w0
X7t1UQwO)~0 SELECT MAX(CNT) INTO MAX_ONE FROM MV_TIME_STAT;
S;\9p/`(h0z#N:n"IU0
y7l.}#VxHp:X4L-F0
G
Lo#uCgl q2m-v{0 FOR I IN 1 .. HEIGHT+1 LOOPITPUB个人空间2?4J)T(Q!o']K
OG3D1X"O%ef4N:aN't0
z3{PrY_o/q;O1D7?0 STR_LINE:=LPAD(TO_CHAR(MAX_ONE-(I-1)*MAX_ONE/HEIGHT,'99999')||'-'||TO_CHAR(MAX_ONE-(I-2)*MAX_ONE/HEIGHT,'99999')||'|',14,'0');ITPUB个人空间| ]^6e6F0s'^G5V
ITPUB个人空间o5g$}S(o!O
ITPUB个人空间n&@_} t2Wq
SELECT MAX(SYS_CONNECT_BY_PATH(
XH6oTPT0ITPUB个人空间!e\1L4tM9{1i
ta~l_b0 DECODE(SIGN(CNT-MAX_ONE+(I-1)*MAX_ONE/HEIGHT),-1,ITPUB个人空间.hF-kM!Y!Q7wx#s
ITPUB个人空间gHNg%z7W |9S&O
ITPUB个人空间)b tf#@j
DECODE(SIGN(CNT-MAX_ONE+(I-2)*MAX_ONE/HEIGHT),-1,'^','*'),
@ Bm
M
nv
v3oO0
#l/u9h1^V#X'u0ITPUB个人空间jo[:S3u
'|'),
B/Hf&VQ:a7|0