<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[与GROUP BY子句一起使用的函数 ]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Wed, 20 Sep 2006 14:11:24 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	COUNT(expr)<br/>返回由一个SELECT语句检索出来的行的非NULL值的数目。<br/>mysql> select student.student_name,COUNT(*)<br/>from student,course<br/>where student.student_id=course.student_id<br/>GROUP BY student_name;<br/><br/>COUNT(*)在它返回的检索出来的行数目上有些不同，不管他们是否包含NULL值。如果SELECT从一个表检索，或没有检索出其他列并且没有WHERE子句，COUNT(*)被优化以便快速地返回。例如：<br/><br/>mysql> select COUNT(*) from student;<br/><br/>COUNT(DISTINCT expr,[expr...])<br/>返回一个不同值的数目。<br/>mysql> select COUNT(DISTINCT results) from student;<br/><br/>在MySQL中，你可以通过给出一个表达式列表以得到不同的表达式组合的数目。在 ANSI SQL中，你可能必须在CODE(DISTINCT ..)内进行所有表达式的连接。<br/><br/>AVG(expr)<br/>返回expr的平均值。<br/>mysql> select student_name, AVG(test_score)<br/>from student<br/>GROUP BY student_name;<br/><br/>MIN(expr)<br/>　<br/>MAX(expr)<br/>返回expr的最小或最大值。MIN()和MAX()可以有一个字符串参数；在这种的情况下，他们返回最小或最大的字符串值。<br/>mysql> select student_name, MIN(test_score), MAX(test_score)<br/>from student<br/>GROUP BY student_name;<br/><br/>SUM(expr)<br/>返回expr的和。注意，如果返回的集合没有行，它返回NULL！<br/>STD(expr)<br/>　<br/>STDDEV(expr)<br/>返回expr标准差(deviation)。这是对 ANSI SQL 的扩展。该函数的形式STDDEV()是提供与Oracle的兼容性。<br/>BIT_OR(expr)<br/>返回expr里所有位的位或。计算用 64 位(BIGINT)精度进行。<br/>BIT_AND(expr)<br/>返回expr里所有位的位与。计算用 64 位(BIGINT)精度进行。<br/>MySQL扩展了GROUP BY的用法。你可以不出现在的GROUP BY部分的SELECT表达式中使用列或计算，这表示这个组的任何可能值。你可以使用它是性能更好，避免在不必要的项目上排序和分组。例如，你在下列查询中不需要在customer.name上聚合：<br/><br/>mysql> select order.custid,customer.name,max(payments)<br/>from order,customer<br/>where order.custid = customer.custid<br/>GROUP BY order.custid;<br/><br/>在 ANSI SQL中，你将必须将customer.name加到GROUP BY子句。在MySQL中，名字是冗余的。<br/><br/>如果你从GROUP BY部分省略的列在组中不是唯一的，不要使用这个功能。<br/><br/>在某些情况下，你可以使用MIN()和MAX()获得一个特定的列值，即使它不是唯一的。下例给出从包含sort列中最小值的行的column值：<br/><br/>substr(MIN(concat(sort,space(6-length(sort)),column),7,length(column)))<br/><br/>注意，如果你正在使用MySQL 3.22(或更早)或如果你正在试图遵从ANSI SQL，你不能在GROUP BY或ORDER BY子句中使用表达式。你可以通过使用表达式的一个别名解决此限制：<br/><br/>mysql> SELECT id,FLOOR(value/100) AS val FROM tbl_name<br/>GROUP BY id,val ORDER BY val;<br/><br/>在MySQL3.23中，你可以这样做：<br/><br/>mysql> SELECT id,FLOOR(value/100) FROM tbl_name ORDER BY RAND();
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 与GROUP BY子句一起使用的函数 ]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>