记录工作、生活中的点点滴滴......

用PL/SQL画直方图

上一篇 / 下一篇  2008-08-01 16:00:56 / 个人分类:oracle 数据库技术

SQLCOL 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(vW ?0ITPUB个人空间 oE)]pc{grd}+[
ITPUB个人空间%k l7u!I3?
  
2  SUBSTR('|'||LPAD('> '||CNT,CEIL(CNT/A.TOTAL*300)+LENGTH(TO_CHAR(CNT))+1,'-'),1,35) AS "    Count per hour&quotITPUB个人空间^ vj `5c%`i

;k D$|%~!p0ITPUB个人空间CL_F-? f{ C
  
3  FROM MV_TIME_STAT,(SELECT SUM(CNT) AS TOTAL FROM MV_TIME_STATA;
8|)HKb:C0
#eZJ7VqN/Qm&Z4O5~0
NbrVQ#j:z B9y0
COL Time CLEAR

————————————————————————————

 

CREATE OR REPLACE PROCEDURE HISTOGRAPH(HEIGHT NUMBER DEFAULT 15) AS ITPUB个人空间0d }u&Lj;Lf
ITPUB个人空间]-MNQ1@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}A hdZ
  
STR_TEMP VARCHAR(120);
#P] f+LOhlr0
,N|lr&kV#v&M v0
%`6C,B7yC"r%y W0  
I NUMBER;ITPUB个人空间| Cj8G MN

Iy0hL7Lm0
Y5g4['eVZg0
BEGINITPUB个人空间*gU%B.{IS\

1xv*as-[/kD O0ITPUB个人空间#]u8X!H-VE ~2Q
  DBMS_OUTPUT
.PUT_LINE(LPAD('^',14,' '));ITPUB个人空间,U?+MTj%r*Gvv

2j6Be J4@6M/|+w0
X7t1UQwO)~0  
SELECT MAX(CNTINTO 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个人空间)btf#@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
ggM3tsX pV&f5{0ITPUB个人空间'fl!`l:?3\Ty/z2c
    
'  '))  INTO STR_TEMP
vMN*H0h:QM LL'{0
QObhOP7a"|Y4}0ITPUB个人空间%M0Y:so)tLR@#~
    FROM MV_TIME_STAT
MA Q:x,j0S t;Ez0
S/auyK0
*JO3bf3l0    START WITH TIME
=
c0?(F8| c!\d0ITPUB个人空间)iGtg V4~
ITPUB个人空间)[M4GBCs5^V
    CONNECT BY PRIOR TIME
=TIME-1;ITPUB个人空间*e'l'ld[

D2?,j t5^LU$T0ITPUB个人空间"g6lV6U]f t
    
STR_LINE:=STR_LINE||STR_TEMP;ITPUB个人空间:qx~w[!a}

].S5i:zQ*\/nv._0
*\rn"ZT @e0    
DBMS_OUTPUT.PUT_LINE(REPLACE (STR_LINE,'^',' '));
N} sk-fS0ITPUB个人空间)n}+D'ikO
ITPUB个人空间[ IG3W+fa^4O
  
END LOOP;ITPUB个人空间u&XSU C%ThO

,{n+w L#T6[ L+d {v#n&L0
{ N6k,F9|t6in0  
SELECT MAX(SYS_CONNECT_BY_PATH(TO_CHAR(TIME,'00'),'^'))  INTO STR_TEMP
;k}b#I6Z0
3M)d MHvD-{ m0
o/\~)q!j*s#_@ H9q0  FROM MV_TIME_STATITPUB个人空间'W2nZDB^)Y(d BquU
ITPUB个人空间P!YR*d)EqY
ITPUB个人空间@st?,P$s)\'j9O
  START WITH TIME
=
b-S*P{yM/r8J0
NQ%wz$n6a/g Q0ITPUB个人空间nx.j kJ6wFq
  CONNECT BY PRIOR TIME
=TIME-1;
+d;U)b"oH r,o$XNE(b0
%z5[ L4@)Cf#e0
m:IF a a0  
DBMS_OUTPUT.PUT_LINE(LPAD('0',14,' ')||LPAD('>',LENGTH(REPLACE(STR_TEMP,' '))+3,'-'));
Ci5x0? _}#TN P0
;`ASKih0
eG~$yOw,I} ?0  
DBMS_OUTPUT.PUT_LINE(REPLACE(LPAD('^',14,' ')||REPLACE(STR_TEMP,' '),'^',' '));ITPUB个人空间U m@:@0Ou0M

8_.l3BPybuR!C0ITPUB个人空间)C2tOP1Aggh
END;ITPUB个人空间1B6e:Z%w/n xe[W

]&lO&Vd6T^ DTd0
#},fa^$^ L0/    ITPUB个人空间c~C D }_#kM

,WLp@6Z@:I7p0ITPUB个人空间z2U#X9Vp(n
ITPUB个人空间:Mm:qPb.V.r u
ITPUB个人空间 a6S2W]3I9T
ITPUB个人空间 V3e]7WeY M g Kpl
Procedure created.ITPUB个人空间!x7D3V Q&z#J

 

ITPUB个人空间I SS`W@oI


TAG:

 

评分:0

我来说两句

显示全部

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

日历

« 2008-11-23  
      1
2345678
9101112131415
16171819202122
23242526272829
30      

数据统计

  • 访问量: 405
  • 日志数: 1096
  • 建立时间: 2008-07-18
  • 更新时间: 2008-08-01

RSS订阅

Open Toolbar