![](https://img.haomeiwen.com/i6603900/a4335e8df095cc2b.png)
-
常见函数有SUM()、MIN()、AVG()、COUNT()、MAX()、MIN()
image.png
以上均为聚合函数,必须注意where条件中不能直接使用聚合函数,可以和group by以及having一起使用
select语句关键字顺序:
SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...
select语句执行顺序为:
FROM > WHERE > GROUP BY > HAVING > SELECT的字段 > DISTINCT > ORDER BY > LIMIT
为何不能在where中使用聚合函数?
聚合函数都是针对列操作的,必须结果集确定后,而where语句针对行操作,执行where语句时结果集还没确定下来
如何解决呢?
1、可以使用子查询语句
select c_name, grade from isTester.idoxu where grade = (select min(grade) from isTester.idoxu);
2、使用group by和having
having语句类似where条件语句,只是针对聚合函数,having语句在group by后执行,此时结果集已确定
SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log
INNER JOIN Websites
ON access_log.site_id=Websites.id)
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;
网友评论