由于SQL语句的执行顺序:FROM -> ON -> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> UNION -> ORDER BY -> LIMIT,WHERE子句中不能用聚合函数。
正确答案是:B: WHERE
专业分析:
在SQL语言中,COUNT、SUM、AVG、MAX、MIN等聚合函数主要用于对数据进行汇总计算。它们的使用位置有严格的要求,通常出现在SELECT、HAVING和ORDER BY子句中,而不能出现在WHERE子句中。
1. **SELECT子句**:可以包含聚合函数,用于计算并返回汇总数据。例如:
```sql
SELECT COUNT(*), SUM(salary), AVG(age) FROM employees;
```
2. **WHERE子句**:用于过滤记录,但不能包含聚合函数。WHERE子句在聚合计算之前执行,因此不能对聚合结果进行过滤。例如,以下语法是错误的:
```sql
SELECT * FROM employees WHERE COUNT(*) > 1;
```
3. **HAVING子句**:可以包含聚合函数,用于对聚合结果进行过滤。HAVING子句在聚合计算之后执行。例如:
```sql
SELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 1;
```
4. **ORDER BY子句**:可以包含聚合函数,用于对结果进行排序。例如:
```sql
SELECT department, COUNT(*) FROM employees GROUP BY department ORDER BY COUNT(*) DESC;
```
因此,聚合函数不能出现在WHERE子句中,正确答案是B: WHERE。