Due to the execution order of SQL statements: FROM -> ON -> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> UNION -> ORDER BY -> LIMIT, aggregate functions cannot be used in the WHERE clause.
正确答案是:B: WHERE
专业分析:
在SQL中,COUNT, SUM, AVG, MAX, MIN等聚合函数(aggregate functions)用于对一组值进行计算,并返回单一的值。它们通常用于生成汇总数据。根据SQL的语法规则,聚合函数有特定的使用场景和限制。
1. **SELECT子句**:聚合函数可以出现在SELECT子句中,用于返回计算结果。例如:
```sql
SELECT COUNT(*), SUM(salary), AVG(age) FROM employees;
```
2. **WHERE子句**:聚合函数不能出现在WHERE子句中。WHERE子句用于过滤行,在行级别进行操作,而聚合函数是在组级别进行计算的。因此,不能在WHERE子句中使用聚合函数。例如,以下SQL是错误的:
```sql
SELECT * FROM employees WHERE COUNT(*) > 1; -- 错误
```
3. **HAVING子句**:聚合函数可以出现在HAVING子句中,用于对分组后的结果进行过滤。例如:
```sql
SELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 5;
```
4. **ORDER BY子句**:聚合函数可以出现在ORDER BY子句中,用于对结果集进行排序。例如:
```sql
SELECT department, COUNT(*) as emp_count FROM employees GROUP BY department ORDER BY COUNT(*);
```
综上所述,聚合函数不能出现在WHERE子句中,因此正确答案是B: WHERE。