Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

Oracle·ÖÎöº¯Êý²Î¿¼ÊÖ²á

תÖÁ(http://xsb.itpub.net/post/419/33028)
22/06/2005 12:22 FP
Oracle´Ó8.1.6¿ªÊ¼Ìṩ·ÖÎöº¯Êý£¬·ÖÎöº¯ÊýÓÃÓÚ¼ÆËã»ùÓÚ
×éµÄijÖÖ¾ÛºÏÖµ£¬ËüºÍ¾ÛºÏº¯ÊýµÄ²»Í¬Ö®´¦ÊǶÔÓÚÿ¸ö×é·µ»Ø¶àÐУ¬¶ø¾ÛºÏº¯Êý¶ÔÓÚÿ¸ö×éÖ»·µ»ØÒ»ÐС£
ÏÂÃæÀý×ÓÖÐʹÓõıíÀ´×ÔOracle×Ô´øµÄHRÓû§ÏÂµÄ±í£¬Èç¹û
ûÓа²×°¸ÃÓû§£¬¿ÉÒÔÔÚSYSÓû§ÏÂÔËÐÐ$ORACLE_HOME/demo/schema/human_resources/hr_main.sqlÀ´
´´½¨¡£
³ý±¾ÎÄÄÚÈÝÍ⣬Ä㻹¿É²Î¿¼£º
ROLLUPÓëCUBE http://xsb.itpub.net/post/419/29159
·ÖÎöº¯ÊýʹÓÃÀý×Ó½éÉÜ£ºhttp://xsb.itpub.net/post/419/44634
±¾ÎÄÈç¹ûδָÃ÷£¬È±Ê¡ÊÇÔÚHRÓû§ÏÂÔËÐÐÀý×Ó¡£
¿ª´°º¯ÊýµÄµÄÀí½â£º
¿ª´°º¯ÊýÖ¸¶¨ÁË·ÖÎöº¯Êý¹¤×÷µÄÊý¾Ý´°¿Ú´óС£¬Õâ¸ö
Êý¾Ý´°¿Ú´óС¿ÉÄÜ»áËæ×ÅÐеı仯¶ø±ä»¯£¬¾ÙÀýÈçÏ£º
over£¨order by salary£© °´ÕÕsalaryÅÅÐò½øÐÐÀۼƣ¬order
byÊǸöĬÈϵĿª´°º¯Êý
over£¨partition by deptno£©°´ÕÕ²¿ÃÅ·ÖÇø
over£¨order by salary
range between 50 preceding and 150 following£©
ÿÐжÔÓ¦µÄÊý¾Ý´°¿ÚÊÇ֮ǰÐзù¶ÈÖµ²»³¬¹ý50£¬Ö®
ºóÐзù¶ÈÖµ²»³¬¹ý150
over£¨order by salary rows between 50 preceding and 150
following£©
ÿÐжÔÓ¦µÄÊý¾Ý´°¿ÚÊÇ֮ǰ50ÐУ¬Ö®ºó150ÐÐ
over£¨order by salary rows
between unbounded preceding and unbounded following£©
ÿÐжÔÓ¦µÄÊý¾Ý´°¿ÚÊÇ´ÓµÚÒ»Ðе½×î
ºóÒ»ÐУ¬µÈЧ£º
over£¨order by salary range between unbounded preceding and
unbounded following£©
Ö÷Òª²Î¿¼×ÊÁÏ£º¡¶expert
one-on-one¡· Tom Kyte ¡¶Oracle9i SQL Reference¡·µÚ6ÕÂ
AVG
¹¦ÄÜÃèÊö£ºÓÃÓÚ¼ÆËãÒ»¸ö×éºÍÊý¾Ý´°¿ÚÄÚ±í´ïʽµÄƽ¾ùÖµ¡£
SAMPLE£ºÏÂÃæµÄÀý×ÓÖÐÁÐc_mavg¼ÆËãÔ±¹¤±í
ÖÐÿ¸öÔ±¹¤µÄƽ¾ùнˮ±¨¸æ£¬¸Ãƽ¾ùÖµÓɵ±Ç°Ô±¹¤ºÍÓëÖ®¾ßÓÐÏàͬ¾­ÀíµÄǰһ¸öºÍºóÒ»¸öÈýÕߵį½¾ùÊýµÃÀ´£»
SELECT manager_id, last_name, hire_date, salary,
AVG(salary)
OVER (PARTITION BY manager_id ORDER BY hire_date
ROWS BETWEEN 1
PRECEDING AND 1 FOLLOWING) AS c_mavg
from employees;
MANAGER_ID LAST_NAME HIRE_DATE SALARY C_MAVG
----------
------------------------- --------- ---------- ----------
100 Kochhar
21-SEP-89 17000 17000
100 De Haan 13-JAN-93 17000 15000
100
Raphaely 07-DEC-94 11000 11966.6667
100 Kaufling 01-MAY-95 7900
10633.3333
100 Hart


Ïà¹ØÎĵµ£º

ORACLE¹ÜÀíÔ±ÃÜÂ붪ʧ½â¾ö·½°¸

1¡¢OracleÀïÃæÓû§µÄÃÜÂëÊǽøÐмÓÃܱ£´æµÄ,ËùÒÔÖ»ÄÜÖØÐÂÐÞ¸ÄÉú³ÉеÄÃÜÂë.


ÀûÓÃϵͳ¹ÜÀíÔ±(sys)µÇ¼,½«scottÓû§µÄÃÜÂëÐ޸ļ´¿É

SQL>conn / as sysdba ;


ÒÑÁ¬½Ó¡£

SQL>alter user scott identified by tiger
;


Óû§ÒѸü¸Ä¡£

µ±È»Ò²¿ÉÒÔµ½WEB¶Ë½øÐÐÐ޸ĵØÖ·È ......

oracle µÄ left/right joinÓë(+)µÄÒ»¸öÇø±ð

»ù±¾´ÓÀ´²»ÓÃleft/right join
Ò»¸öÏîÄ¿±»ÆÈÒªÓñðÈËдµÄ sql
±¾´òËã¸ÄдһÏ£¬Ìá¸ßЧÂÊ
·¢ÏÖ£º
¡¾1¡¿
select * from  a
left outer join  b on a.id= b.id AND ...1...
 where ...2...
Óë
¡¾2¡¿
select * from  a , b 
 where a.id= b.id(+)
A ......

Oracleѧϰ±Ê¼ÇÖ®ÈÕÆÚº¯Êý

OracleÈÕÆÚº¯Êýѧϰʱ£¬Ôڽ̳ÌÓм¸¸öʵÀýÈçÏ£º
Months_between(’01-sep-95’, ’11-jan-94’)
½á¹ûÊÇ£º19.6774194

Add_months ÔÚÖ¸¶¨µÄÔ·ÝÉÏÃæÔö¼ÓÏàÓ¦µÃÔ·Ý
ÀýÈ磺
Add_months(’11-jan-94’, 6)
½á¹ûÊÇ£º11-jul-94

Next_day ¼ÆËã¹æ¶¨Èͮ򵀼óÒ»¸öÌØ¶¨ÈÕÆÚ
ÀýÈ磺
Next_ ......

OracleÖаÑyyyy mm ddת³ÉyyyyÄêmmÔÂddÈÕ


SQL> select   to_char(sysdate,'yyyy')||'Äê'||to_char(sysdate,'mm')||'ÔÂ'||to_char(sysdate,'dd')||'ÈÕ'  from   dual;
TO_CHAR(SYSDATE,'YYYY')||'Äê'|
»òÕßʹÓÃË«ÒýºÅ
select to_char(add_months(trunc(sysdate),-1),'yyyy"Äê"mm"ÔÂ"') from dual    È¡ÉϸöÔ·Ý
......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ