MySQL高级特性之集合函数

时间:2009-02-26 16:19:00 

到现在为止,你只学习了如何根据特定的条件从表中取出一条或多条记录。但是,假如你想对一个表中的记录进行数据统计。例如,如果你想统计存储在表中的一次民意测验的投票结果。或者你想知道一个访问者在你的站点上平均花费了多少时间。要对表中的任何类型的数据进行统计,都需要使用集合函数。你可以统计记录数目,平均值,最小值,最大值,或者求和。当你使用一个集合函数时,它只返回一个数,该数值代表这几个统计值之一。

这些函数的最大特点就是经常和GROUP BY语句配合使用,需要注意的是集合函数不能和非分组的列混合使用。

行列计数

计算查询语句返回的记录行数

直接计算函数COUNT(*)的值,例如,计算pet表中猫的只数:

mysql>SELECT count(*) FROM pet WHERE species=’cat’;

+----------+

| count(*) |

+----------+

| 2 |

+----------+

统计字段值的数目

例如,计算pet表中species列的数目:

mysql> SELECT count(species) FROM pet;

+----------------+

| count(species) |

+----------------+

| 9 |

+----------------+

如果相同的种类出现了不止一次,该种类将会被计算多次。如果你想知道种类为某个特定值的宠物有多少个,你可以使用WHERE子句,如下例所示:

mysql> SELECT COUNT(species) FROM pet WHERE species='cat' ;

注意这条语句的结果:

+----------------+

| COUNT(species) |

+----------------+

| 2 |

+----------------+

这个例子返回种类为'cat'的作者的数目。如果这个名字在表pet中出现了两次,则次函数的返回值是2。 而且它和上面提到过的语句的结果是一致的:

SELECT count(*) FROM pet WHERE species=’cat’

实际上,这两条语句是等价的。

假如你想知道有多少不同种类的的宠物数目。你可以通过使用关键字DISTINCT来得到该数目。如下例所示:

mysql> SELECT COUNT(DISTINCT species) FROM pet;

+-------------------------+

| COUNT(DISTINCT species) |

+-------------------------+

| 5 |

+-------------------------+

如果种类'cat'出现了不止一次,它将只被计算一次。关键字DISTINCT 决定了只有互不相同的值才被计算。

通常,当你使用COUNT()时,字段中的空值将被忽略。

另外,COUNT()函数通常和GROUP BY子句配合使用,例如可以这样返回每种宠物的数目:

mysql> SELECT species,count(*) FROM pet GROUP BY species;

+---------+----------+

| species | count(*) |

+---------+----------+

| bird | 2 |

| cat | 2 |

| dog | 3 |

| hamster | 1 |

| snake | 1 |

+---------+----------+

计算字段的平均值

需要计算这些值的平均值。使用函数AVG(),你可以返回一个字段中所有值的平均值。

假如你对你的站点进行一次较为复杂的民意调查。访问者可以在1到10之间投票,表示他们喜欢你站点的程度。你把投票结果保存在名为vote的INT型字段中。要计算你的用户投票的平均值,你需要使用函数AVG():

SELECT AVG(vote) FROM opinion

这个SELECT语句的返回值代表用户对你站点的平均喜欢程度。函数AVG()只能对数值型字段使用。这个函数在计算平均值时也忽略空值。

标签:函数,mysql,特性,数据库
0
投稿

猜你喜欢

  • phpMyAdmin 2.10.2 配置方法

    2007-08-22 08:11:00
  • 网站浏览器兼容的底线

    2007-12-22 11:26:00
  • asp如何实现对Session 数组的定义和调用?

    2010-05-18 18:40:00
  • MYSQL主从库不同步故障一例解决方法

    2010-06-09 19:12:00
  • Window.Open详解

    2008-06-08 13:43:00
  • 快速图片链接批处理

    2007-02-03 11:39:00
  • SQL Server 2008数据挖掘查询任务

    2009-03-16 16:50:00
  • VBScript中变量作用域

    2007-11-02 10:03:00
  • VBScript WeekdayName 函数语法

    2008-01-25 19:25:00
  • 对fieldset和legend的默认样式一点分析

    2008-07-02 12:56:00
  • XML数据查询技术已经成为现今的研究热点

    2008-09-05 17:13:00
  • ASP实现网页打开任何类型文件都保存的方法

    2007-12-21 13:10:00
  • 轻设计,让网站灵敏轻便的6个技巧

    2009-12-07 21:26:00
  • IE中不可遍历的属性

    2010-01-19 13:47:00
  • IE中伪类:hover的使用及BUG

    2007-05-11 17:04:00
  • SQL Server 2005中数据库镜像的四个问题

    2009-02-19 16:48:00
  • 如何决定是否将登录内容保存到Cookie里?

    2009-12-16 18:54:00
  • 寻找Dreamweaver鲜为人知的小秘诀

    2008-04-28 12:10:00
  • 巧用CSS滤镜做图案文字

    2011-04-29 14:06:00
  • 让复杂导航设计变得简单

    2008-01-07 11:50:00
  • asp之家 网络编程 m.aspxhome.com