赞
踩
上文我们讲到了单行函数.实际上SQL还有一类叫做聚合函数, 它是对一组数据进行汇总的函数, 输入的是一组数据的集合, 输出的是单个值.
用于处理一组数据, 并对一组数据返回一个值.
有如下几种聚合函数 : AVG(), SUM(), MAX(), MIN(), COUNT().
在MySQL中,不允许聚合函数嵌套,即不允许MIN(AVG(salary))出现,会报错.
该可以对数值型数据使用AVG和SUM函数.计算一列数据的平均值/总和.
例 :
可以对任意数据类型的数据使用MIN与MAX函数,如日期类型,字符串类型的数据.
例 :
COUNT(*)是SQL92定义的标准统计行数的语法,其用于返回表中记录的总数,适用于任何数据类型.而COUNT(expr)返回表中expr不为空的记录总数.
例 :
该表中字段有为空的记录,所以要比第一种情况的结果要少.
我们可以使用GROUP BY子句将表中数据分为若干组.
注 :
例 :
GROUP BY子句将表中记录依据jobid分组,AVG(salary)计算每组的salary总和的平均值.
例 :
GROUP BY子句将表中记录依据该二者分组,只有不同记录中该二者字段均相等的记录才能被分为一组.
注 :
例 :
过滤分组 : HAVING子句
例 : 用来过滤已分组的记录
可以在HAVING子句中使用聚合函数,但在WHERE子句中不允许这么做.
例 :
(1). 区别1:
(2). 区别2:
(3). 小结 :
- WHERE 先筛选数据再关联,执行效率高 不能使用分组中的计算函数进行筛选
-
- HAVING 可以使用分组中的计算函数 在最后的结果集中进行筛选, 执行效率较低
(4). 选择 :
WHERE 和 HAVING 也不是互相排斥的,我们可以在一个查询里面同时使用 WHERE 和 HAVING。包含分组统计函数的条件用 HAVING,普通条件用 WHERE。这样,我们就既利用了 WHERE 条件的高效快速,又发挥了 HAVING 可以使用包含分组统计函数的查询条件的优点。当数据量特别大的时候,运行效率会有很大的差别。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。