ROLLUPºÍCUBEÓï¾ä¡£ ORACLE·Ö×éͳ¼Æ
ROLLUPºÍCUBEÓï¾ä¡£
OracleµÄGROUP
BYÓï¾ä³ýÁË×î»ù±¾µÄÓï·¨Í⣬»¹Ö§³ÖROLLUPºÍCUBEÓï¾ä¡£Èç¹ûÊÇROLLUP(A, B, C)µÄ»°£¬Ê×ÏÈ»á¶Ô(A¡¢B¡¢C)½øÐÐGROUP
BY£¬È»ºó¶Ô(A¡¢B)½øÐÐGROUP BY£¬È»ºóÊÇ(A)½øÐÐGROUP BY£¬×îºó¶ÔÈ«±í½øÐÐGROUP BY²Ù×÷¡£Èç¹ûÊÇGROUP BY
CUBE(A, B, C)£¬ÔòÊ×ÏÈ»á¶Ô(A¡¢B¡¢C)½øÐÐGROUP
BY£¬È»ºóÒÀ´ÎÊÇ(A¡¢B)£¬(A¡¢C)£¬(A)£¬(B¡¢C)£¬(B)£¬(C)£¬×îºó¶ÔÈ«±í½øÐÐGROUP BY²Ù×÷¡£
grouping_id()¿ÉÒÔÃÀ»¯Ð§¹û£º
OracleµÄGROUP BYÓï¾ä³ýÁË×î»ù±¾µÄÓï·¨Í⣬»¹Ö§³ÖROLLUPºÍCUBEÓï¾ä¡£
³ý±¾ÎÄÄÚÈÝÍ⣬Ä㻹¿É²Î¿¼£º
·ÖÎöº¯Êý²Î¿¼Êֲ᣺
http://xsb.itpub.net/post/419/33028
·ÖÎöº¯ÊýʹÓÃÀý×Ó½éÉÜ£º
http://xsb.itpub.net/post/419/44634
SQL> create table t as select * from dba_indexes;
±íÒÑ´´½¨¡£
SQL> select index_type, status, count(*) from t group by index_type, status;
INDEX_TYPE STATUS COUNT(*)
--------------------------- -------- ----------
LOB VALID 51
NORMAL N/A 25
NORMAL VALID 479
CLUSTER VALID 11
ÏÂÃæÀ´¿´¿´ROLLUPºÍCUBEÓï¾äµÄÖ´Ðнá¹û¡£
SQL> select index_type, status, count(*) from t group by rollup(index_type, status);
INDEX_TYPE STATUS COUNT(*)
--------------------------- -------- ----------
LOB VALID 51
LOB 51
NORMAL N/A 25
NORMAL VALID 479
NORMAL 504
CLUSTER VALID 11
CLUSTER 11
566
ÒÑÑ¡Ôñ8ÐС£
SQL> select index_type, status, count(*) from t group by cube(index_type, status);
INDEX_TYPE STATUS COUNT(*)
--------------------------- -------- ----------
566
N/A 25
VALID 541
LOB 51
LOB VALID 51
NORMAL 504
NORMAL N/A 25
NORMAL VALID 479
CLUSTER 11
CLUSTER VALID 11
ÒÑÑ¡Ôñ10ÐС£
²éѯ½á¹û²»ÊǺÜһĿÁËÈ»£¬ÏÂÃæÍ¨¹ýOracleÌṩµÄº¯ÊýGROUPINGÀ´ÕûÀíһϲéѯ½á¹û¡£
SQL> select grouping(index_type) g_ind, grouping(status) g_st, index_type, status, count(*)
2 from t group by rollup(index_type, status) order by 1, 2;
G_IND G_ST INDEX_TYPE STATUS COUNT(*)
---------- ---------- --------------------------- -------- ----------
0 0 LOB VALID 51
0 0 NORMAL N/A 25
0 0 NORMAL VALID 479
0 0 CLUSTER VALID 11
0 1 LOB 51
0 1 NORMAL 504
0 1 CLUSTER 11
1 1 566
ÒÑÑ¡
Ïà¹ØÎĵµ£º
ORACLE RAC¹¤×÷ÔÀí
ORACLE RAC¹¤×÷ÔÀí
¡¡¡¡ÔÚÒ»¸öÓ¦Óû·¾³µ±ÖУ¬ËùÓеķþÎñÆ÷ʹÓú͹ÜÀíͬһ¸öÊý¾Ý¿â£¬Ä¿µÄÊÇΪÁË·Öɢÿһ̨·þÎñÆ÷µÄ¹¤×÷Á¿£¬Ó²¼þÉÏÖÁÉÙÐèÒªÁ½Ì¨ÒÔÉϵķþÎñÆ÷£¬¶øÇÒ»¹ÐèÒªÒ»¸ö¹²Ïí´æ´¢É豸¡£Í¬Ê±»¹ÐèÒªÁ½ÀàÈí¼þ£¬Ò»¸öÊǼ¯ÈºÈí¼þ£¬ÁíÍâÒ»¸ö¾ÍÊÇOracleÊý¾Ý¿âÖеÄRAC×é¼þ¡£Í¬Ê±ËùÓзþÎñÆ÷ÉϵÄOS¶¼Ó¦¸ÃÊÇÍ ......
OracleÄÚÖú¯ÊýSQLCODEºÍSQLERRMÊÇÌØ±ðÓÃÔÚOTHERS´¦ÀíÆ÷ÖУ¬·Ö±ðÓÃÀ´·µ»ØOracleµÄ´íÎó´úÂëºÍ´íÎóÏûÏ¢¡£
¡¡¡¡
¡¡¡¡OTHERS´¦ÀíÆ÷Ó¦¸ÃÊÇÒì³£´¦Àí¿éÖеÄ×îºóµÄÒì³£´¦ÀíÆ÷£¬ÒòΪËüÊÇÓÃÀ´²¶»ñ³ýÁ˱ðµÄÒì³£´¦ÀíÆ÷´¦ÀíÒÔÍâµÄËùÓеÄOracleÒì³££¬ËùÒÔÔÚ³ÌÐòµÄ×îÍâ²ãʹÓÃÒ»¸öOTHERS´¦ÀíÆ÷µÄ»°£¬ ......
1¡¢±àдĿµÄ
ʹÓÃͳһµÄÃüÃûºÍ±àÂë¹æ·¶£¬Ê¹Êý¾Ý¿âÃüÃû¼°±àÂë·ç¸ñ±ê×¼»¯£¬ÒÔ±ãÓÚÔĶÁ¡¢Àí½âºÍ¼Ì³Ð¡£
2¡¢ÊÊÓ÷¶Î§
±¾¹æ·¶ÊÊÓÃÓÚ¹«Ë¾·¶Î§ÄÚËùÓÐÒÔORACLE×÷Ϊºǫ́Êý¾Ý¿âµÄÓ¦ÓÃϵͳºÍÏîÄ¿¿ª·¢¹¤×÷¡£
3¡¢¶ÔÏóÃüÃû¹æ·¶
3.1 Êý¾Ý¿âºÍSID
Êý¾Ý¿âÃû¶¨ÒåΪϵͳÃû+Ä£¿éÃû
¡ï È«¾ÖÊý¾Ý¿âÃûºÍÀý³ÌSID ÃûÒªÇóÒ»ÖÂ
¡ï ÒòSID ......
1.³õʼ»¯ÊµÑ黵¾³
1£©´´½¨²âÊÔ±ígroup_test
sec@ora10g> create table group_test (group_id int, job varchar2(10), name varchar2(10), salary int);
¡¡
Table created.
¡¡
2£©³õʼ»¯Êý¾Ý
insert into group_test values (10,'Coding', 'Bruce',1000);
insert into group_test val ......