oracleµÄsqlplusϵÄÅäÖà ÁªÏµ¿Í·þ

·¢²¼Ê±¼ä : ÐÇÆÚÁù ÎÄÕÂoracleµÄsqlplusϵÄÅäÖøüÐÂÍê±Ï¿ªÊ¼ÔĶÁf4f09e76001ca300a6c30c22590102020740f2b0

oracle·ÖÎöº¯Êý--SQL*PLUS»·¾³ Ò»¡¢×ÜÌå½éÉÜ

12.1 ·ÖÎöº¯ÊýÈçºÎ¹¤×÷

Óï·¨ FUNCTION_NAME(<²ÎÊý>,?) OVER ( > ) PARTITION×Ó¾ä ORDER BY×Ó¾ä WINDOWING×Ó¾ä ȱʡʱÏ൱ÓÚRANGE UNBOUNDED PRECEDING 1. ÖµÓò´°(RANGE WINDOW)

RANGE N PRECEDING ½ö¶ÔÊýÖµ»òÈÕÆÚÀàÐÍÓÐЧ,Ñ¡¶¨´°ÎªÅÅÐòºóµ±Ç°ÐÐ֮ǰ,ijÁÐ(¼´ÅÅÐòÁÐ)Öµ´óÓÚ/СÓÚ(µ±Ç°ÐиÃÁÐÖµ ¨C/+ N)µÄËùÓÐÐÐ,Òò´ËÓëORDER BY×Ó¾äÓйØϵ¡£

2. Ðд°(ROW WINDOW)

ROWS N PRECEDING Ñ¡¶¨´°Îªµ±Ç°Ðм°Ö®Ç°NÐС£

»¹¿ÉÒÔ¼ÓÉÏBETWEEN AND ÐÎʽ,ÀýÈçRANGE BETWEEN m PRECEDING AND n FOLLOWING

º¯Êý AVG( eXPr)

Ò»×é»òÑ¡¶¨´°Öбí´ïʽµÄƽ¾ùÖµ CORR(expr, expr) ¼´COVAR_POP(exp1,exp2) / (STDDEV_POP(expr1) * STDDEV_POP(expr2)),Á½¸ö±í´ïʽµÄ»¥Ïà¹Ø,-1(·´Ïà¹Ø) ~ 1(ÕýÏà¹Ø),0±íʾ²»Ïà¹Ø

COUNT( <*> ) ¼ÆÊý COVAR_POP(expr, expr) ×ÜÌåЭ·½²î COVAR_SAMP(expr, expr) Ñù±¾Ð­·½²î

CUME_DIST ÀÛ»ý·Ö²¼,¼´ÐÐÔÚ×éÖеÄÏà¶ÔλÖÃ,·µ»Ø0 ~ 1

DENSE_RANK ÐеÄÏà¶ÔÅÅÐò(ÓëORDER BY´îÅä),ÏàͬµÄÖµ¾ßÓÐÒ»ÑùµÄÐòÊý(NULL¼ÆΪÏàͬ),²¢²»Áô¿ÕÐòÊý

FIRST_VALUE Ò»¸ö×éµÄµÚÒ»¸öÖµ

LAG(expr, , ) ·ÃÎÊ֮ǰµÄÐÐ,OFFSETÊÇȱʡΪ1 µÄÕýÊý,±íʾÏà¶ÔÐÐÊý,DEFAULTÊǵ±³¬³öÑ¡¶¨´°·¶Î§Ê±µÄ·µ»ØÖµ(ÈçµÚÒ»Ðв»´æÔÚ֮ǰÐÐ)

LAST_VALUE Ò»¸ö×éµÄ×îºóÒ»¸öÖµ

LEAD(expr, , ) ·ÃÎÊÖ®ºóµÄÐÐ,OFFSETÊÇȱʡΪ1 µÄÕýÊý,±íʾÏà¶ÔÐÐÊý,DEFAULTÊǵ±³¬³öÑ¡¶¨´°·¶Î§Ê±µÄ·µ»ØÖµ(Èç×îºóÐв»´æÔÚ֮ǰÐÐ)

MAX(expr) ×î´óÖµ MIN(expr) ×îСֵ

NTILE(expr) °´±í´ïʽµÄÖµºÍÐÐÔÚ×éÖеÄλÖñàºÅ,Èç±í´ïʽΪ4,Ôò×é·Ö4·Ý,·Ö±ðΪ1 ~ 4µÄÖµ,¶ø²»ÄܵȷÖÔò¶à³öµÄ²¿·ÖÔÚÖµ×îСµÄÄÇ×é PERCENT_RANK ÀàËÆCUME_DIST,1/(ÐеÄÐòÊý - 1) RANK Ïà¶ÔÐòÊý,´ðÓ¦²¢ÁÐ,²¢¿Õ³öËæºóÐòºÅ

RATIO_TO_REPORT(expr) ±í´ïʽֵ / SUM(±í´ïʽֵ) ROW_NUMBER ÅÅÐòµÄ×éÖÐÐеÄÆ«ÒÆ STDDEV(expr) ±ê×¼²î

STDDEV_POP(expr) ×ÜÌå±ê×¼²î STDDEV_SAMP(expr) Ñù±¾±ê×¼²î

SUM(expr) ºÏ¼Æ

VAR_POP(expr) ×ÜÌå·½²î VAR_SAMP(expr) Ñù±¾·½²î VARIANCE(expr) ·½²î

REGR_ xxxx(expr, expr) ÏßÐԻع麯Êý

REGR_SLOPE£º·µ»ØбÂÊ£¬µÈÓÚCOVAR_POP(expr1, expr2) / VAR_POP(expr2) REGR_INTERCEPT£º·µ»Ø»Ø¹éÏßµÄy½Ø¾à£¬µÈÓÚ

AVG(expr1) - REGR_SLOPE(expr1, expr2) * AVG(expr2) REGR_COUNT£º·µ»ØÓÃÓÚÌî³ä»Ø¹éÏߵķǿÕÊý×Ö¶ÔµÄÊýÄ¿ REGR_R2£º·µ»Ø»Ø¹éÏߵľö¶¨ÏµÊý£¬¼ÆËãʽΪ£º If VAR_POP(expr2) = 0 then return NULL

If VAR_POP(expr1) = 0 and VAR_POP(expr2) != 0 then return 1 If VAR_POP(expr1) > 0 and VAR_POP(expr2 != 0 then return POWER(CORR(expr1,expr),2)

REGR_AVGX£º¼ÆËã»Ø¹éÏßµÄ×Ô±äÁ¿(expr2)µÄƽ¾ùÖµ£¬È¥µôÁË¿Õ¶Ô(expr1, expr2)ºó£¬µÈÓÚAVG(expr2)

REGR_AVGY£º¼ÆËã»Ø¹éÏßµÄÓ¦±äÁ¿(expr1)µÄƽ¾ùÖµ£¬È¥µôÁË¿Õ¶Ô(expr1, expr2)ºó£¬µÈÓÚAVG(expr1)

REGR_SXX£º ·µ»ØÖµµÈÓÚREGR_COUNT(expr1, expr2) * VAR_POP(expr2) REGR_SYY£º ·µ»ØÖµµÈÓÚREGR_COUNT(expr1, expr2) * VAR_POP(expr1) REGR_SXY: ·µ»ØÖµµÈÓÚREGR_COUNT(expr1, expr2) * COVAR_POP(expr1, expr2)

Ê×ÏÈ£º´´½¨±í¼°½ÓÈë²âÊÔÊý¾Ý create table students (id number(15,0), area varchar2(10), stu_type varchar2(2), score number(20,2));

insert into students values(1, '111', 'g', 80 ); insert into students values(1, '111', 'j', 80 ); insert into students values(1, '222', 'g', 89 ); insert into students values(1, '222', 'g', 68 ); insert into students values(2, '111', 'g', 80 ); insert into students values(2, '111', 'j', 70 ); insert into students values(2, '222', 'g', 60 ); insert into students values(2, '222', 'j', 65 ); insert into students values(3, '111', 'g', 75 ); insert into students values(3, '111', 'j', 58 ); insert into students values(3, '222', 'g', 58 ); insert into students values(3, '222', 'j', 90 ); insert into students values(4, '111', 'g', 89 ); insert into students values(4, '111', 'j', 90 );

insert into students values(4, '222', 'g', 90 ); insert into students values(4, '222', 'j', 89 ); commit;

¶þ¡¢¾ßÌåÓ¦Ó㺠1¡¢·Ö×éÇóºÍ£º 1£©GROUP BY×Ó¾ä --A¡¢GROUPING SETS

select id,area,stu_type,sum(score) score from students

group by grouping sets((id,area,stu_type),(id,area),id) order by id,area,stu_type;

/*--------Àí½âgrouping sets select a, b, c, sum( d ) from t group by grouping sets ( a, b, c )

µÈЧÓÚ

select * from (

select a, null, null, sum( d ) from t group by a union all

select null, b, null, sum( d ) from t group by b union all

select null, null, c, sum( d ) from t group by c ) */

--B¡¢ROLLUP

select id,area,stu_type,sum(score) score from students

group by rollup(id,area,stu_type) order by id,area,stu_type;

/*--------Àí½ârollup select a, b, c, sum( d ) from t

group by rollup(a, b, c);

µÈЧÓÚ

select * from (

select a, b, c, sum( d ) from t group by a, b, c union all

select a, b, null, sum( d ) from t group by a, b union all

select a, null, null, sum( d ) from t group by a union all

select null, null, null, sum( d ) from t ) */

--C¡¢CUBE

select id,area,stu_type,sum(score) score from students

group by cube(id,area,stu_type) order by id,area,stu_type;

/*--------Àí½âcube

select a, b, c, sum( d ) from t group by cube( a, b, c)

µÈЧÓÚ

select a, b, c, sum( d ) from t group by grouping sets( ( a, b, c ),

( a, b ), ( a ), ( b, c ), ( b ), ( a, c ), ( c ), () ) */

--D¡¢GROUPING

/*´ÓÉÏÃæµÄ½á¹ûÖÐÎÒÃǺÜÈÝÒ×·¢ÏÖ,ÿ¸öͳ¼ÆÊý¾ÝËù¶ÔÓ¦µÄÐж¼»á³öÏÖnull, ÈçºÎÀ´Çø·Öµ½µ×ÊǸù¾ÝÄǸö×Ö¶Î×öµÄ»ã×ÜÄØ,groupingº¯ÊýÅжÏÊÇ·ñºÏ¼ÆÁÐ!*/

select decode(grouping(id),1,'all id',id) id,

decode(grouping(area),1,'all area',to_char(area)) area,

decode(grouping(stu_type),1,'all_stu_type',stu_type) stu_type, sum(score) score from students

group by cube(id,area,stu_type) order by id,area,stu_type;