先说结果:不可以
通常sql语句结构为:
select 字段名1,字段名2,字段名3...
from 表名
where 过滤条件;
组函数包括以下:
sum():求和
avg():求平均值
max():求最大值
min():求最小值
count():统计数量
如何判断where子句是否可以使用组函数?那就要知道组函数是在什么时候调用的
先从最简单的sql语句分析:
select salary
from employees
where first_name = 'Steven';
结果是:
分析:sql语句执行过程是:从employees表中找到first_name是Steven的人的salary,由结果得知有两位,薪水分别是24000和2200
那么sql语句执行就是from->where->select
此时添加一个组函数:
select first_name,salary
from employees
where salary > avg(salary);
从表面分析:从员工表中找到薪水在平均薪水以上的员工姓名和薪水
可是在运行时出现:
Invalid use of group function
#组函数不可用
分析:avg(salary)是求全部员工薪水的平均值,前提是全部薪水被找到
where子句是对记录进行过滤,一行一行的过滤,判断表中某一行符不符合条件,进行过滤,此时全部结果并没有被找到,如果组函数放在where中,where还在进行过滤,突然组函数来了说要查看全部结果,完全是不可能的,所以where子句不能使用组函数进行过滤