SQL Group by ѧϰ
ÈÕÆÚ£º2007Äê7ÔÂ8ÈÕ ×÷Õߣº ²é¿´:[´ó×ÖÌå ÖÐ×ÖÌå С×ÖÌå]-
4.group by
ÔÚselect Óï¾äÖпÉÒÔʹÓÃgroup by ×Ӿ佫Ðл®·Ö³É½ÏСµÄ×飬Ȼºó£¬Ê¹ÓþÛ×麯Êý·µ»ØÃ¿Ò»¸ö×éµÄ»ã×ÜÐÅÏ¢£¬ÁíÍ⣬¿ÉÒÔʹÓÃhaving×Ó¾äÏÞÖÆ·µ»ØµÄ½á¹û¼¯¡£group by ×Ó¾ä¿ÉÒÔ½«²éѯ½á¹û·Ö×飬²¢·µ»ØÐеĻã×ÜÐÅÏ¢Oracle °´ÕÕgroup by ×Ó¾äÖÐÖ¸¶¨µÄ±í´ïʽµÄÖµ·Ö×é²éѯ½á¹û¡£
ÔÚ´øÓÐgroup by ×Ó¾äµÄ²éѯÓï¾äÖУ¬ÔÚselect ÁбíÖÐÖ¸¶¨µÄÁÐҪôÊÇgroup by ×Ó¾äÖÐÖ¸¶¨µÄÁУ¬ÒªÃ´°üº¬¾Û×麯Êý
select max(sal),job emp group by job;
(×¢Òâmax(sal),jobµÄjob²¢·ÇÒ»¶¨Òª³öÏÖ£¬µ«ÓÐÒâÒå)²éѯÓï¾äµÄselect ºÍgroup by ,having ×Ó¾äÊǾÛ×麯ÊýΨһ³öÏֵĵط½£¬ÔÚwhere ×Ó¾äÖв»ÄÜʹÓþÛ×麯Êý¡£
select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno;
µ±ÔÚgropu by ×Ó¾äÖÐʹÓÃhaving ×Ó¾äʱ£¬²éѯ½á¹ûÖÐÖ»·µ»ØÂú×ãhavingÌõ¼þµÄ×é¡£ÔÚÒ»¸ösqlÓï¾äÖпÉÒÔÓÐwhere×Ó¾äºÍhaving×Ӿ䡣having Óëwhere ×Ó¾äÀàËÆ£¬¾ùÓÃÓÚÉèÖÃÏÞ¶¨Ìõ¼þ
where ×Ó¾äµÄ×÷ÓÃÊÇÔÚ¶Ô²éѯ½á¹û½øÐзÖ×éǰ£¬½«²»·ûºÏwhereÌõ¼þµÄÐÐÈ¥µô£¬¼´ÔÚ·Ö×é֮ǰ¹ýÂËÊý¾Ý£¬Ìõ¼þÖв»Äܰüº¬¾Û×麯Êý£¬Ê¹ÓÃwhereÌõ¼þÏÔÊ¾ÌØ¶¨µÄÐС£
having ×Ó¾äµÄ×÷ÓÃÊÇɸѡÂú×ãÌõ¼þµÄ×飬¼´ÔÚ·Ö×éÖ®ºó¹ýÂËÊý¾Ý£¬Ìõ¼þÖо³£°üº¬¾Û×麯Êý£¬Ê¹ÓÃhaving Ìõ¼þÏÔÊ¾ÌØ¶¨µÄ×飬Ҳ¿ÉÒÔʹÓöà¸ö·Ö×é±ê×¼½øÐзÖ×é¡£²éѯÿ¸ö²¿ÃŵÄÿÖÖְλµÄ¹ÍÔ±Êý
select deptno,job,count(*) from emp group by deptno,job;
£¨³ö´¦£º¼±ËÙÈí¼þÏÂÔØÑ§Ôº£©
ÉÏһƪ:MySQLµÄ»ù±¾Ó¦ÓÃ
ÏÂһƪ:ÔÚSqlServerÖÐÓÃ×Ô¶¨Ò庯Êý·µ»Ø¶¯Ì¬±íÄÚÈÝ
