WHERE
- 是一个约束声明,用于约束来自数据库的数据(即在调用相关数据的时候,这些数据已经被过滤了一部分)
- 是在返回结果之前起作用的
- 后面不能跟 聚合函数,因为 WHERE 是对逐条记录进行筛选,聚合后就无法实现功能
HAVING
- 是一个过滤声明,
- 返回结果集之后,对结果集进行过滤,以显示过滤后的结果
- 后面可以跟聚合函数
书写顺序
SELECT[DISTINCT]
FROM
JOIN(如LEFT JOIN)
ON
WHERE
GROUP BY
HAVING
UNION
ORDER BY
LIMIT
常见的聚合函数有:count(), sum(), min(), max(), avg()
其中,min(), max() 还可以对字符串进行操作
聚合函数常配合group by 使用
当select的内容不仅包含 聚合函数列,还包含其他列时,必须使用grou by 函数。
如 : select id, max(score) from t1 group by id;
在使用avg(col1) 时,如果col1 中有 null 值,该行会被忽略。
如果想要把null当做0,那么可以使用IsNull函数,语法如下:
avg(IsNull(col1,0))