黑马程序员技术交流社区
标题:
SQL中聚合函数问题
[打印本页]
作者:
申延超
时间:
2012-11-20 23:35
标题:
SQL中聚合函数问题
本帖最后由 申延超 于 2012-11-23 13:12 编辑
select Fage,COUNT(*) from T_Employee
where COUNT(*)>1
group by FAge;
复制代码
在where中不能使用聚合函数,只能用having,不明白什么是聚合函数,就是这种Count(*)>1的?
那为什么下面这段代码又可以?
select Fage,COUNT(*) from T_Employee
where FAge=23
group by FAge;
复制代码
作者:
希望在明日
时间:
2012-11-20 23:44
其实在聚合函数里面,where与having有这点不同:where 是对数据库里面的数据进行一个筛选,而having是对已经筛选出来的数据进行一个筛选。所以,where后面跟的当然是字段并进行判断,而having后面跟的一个函数.......
作者:
王新阳
时间:
2012-11-21 00:38
聚合函数有:
1. AVG 返回指定组中的平均值,空值被忽略。
2. COUNT 返回指定组中项目的数量。
3. MAX 返回指定数据的最大值。
4. MIN 返回指定数据的最小值。
5. SUM 返回指定数据的和,只能用于数字列,空值被忽略。
Where 是一个约束声明,使用Where来约束来之数据库的数据,Where是在结果返回之前起作用的,且Where中不能使用聚合函数。
Having是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在Having中可以使用聚合函数。
作者:
韩俊
时间:
2012-11-21 08:58
聚合函数包括:MAX(最大值)、MIN(最小值)、AVG(平均值)、SUM(和)、COUNT(数量)
where是返回结果之前检索符合条件的数据,并且聚合函数不能出现在where子句中;
having是对查询结果进行过滤
例:
select. FAge, Count(*). From. Table
Group. by. FAge
Having. Count(*)>1
Having是对分组后信息的过滤,能用的列和select中能用到的列一样。
作者:
武江英
时间:
2012-11-21 09:20
count这类的聚合函数就像EXCEL中的计算函数一样
Having就像是EXCEL中的分类汇总类似。
作者:
韩温华
时间:
2012-11-21 16:31
在where中不能使用聚合函数,必须使用having,having位于group by之后,是对符合条件的分组按照having后的条件再进行筛选。Having中不能使用未参与分组的列,having不能代替where使用。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2