函数 | 说明 |
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行数 |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 返回某列之和 |
现有表:
1. AVG()
求价格平均值
求特定行的平均值
2. COUNT()
求总记录数
3. MAX()
求价格最高
4. MIN()
求价格最低
5. SUM()
求总数量
6. 组合聚集函数
7. 数据分组
创建分组:
过滤分组:
过滤分组不能使用 WHERE,而应该使用 HAVING 子句。HAVING非常类似与 WHERE。它俩的差别就是 WHERE过滤行,而HAVING过滤分组
WHERE和HAVING同时使用:
8. 分组和排序
虽然GROUP BY 和 ORDER BY经常能完成相同的工作,但它们是非常不同的。
ORDER BY | GROUP BY |
排序产生输出 | 分组行。单输出可能不是分组的顺序 |
任意列都可以使用(甚至非选择的列也可以使用) | 只可能使用选择列或表达式列,而且必须使用每个选择列表达式 |
不一定需要 | 如果与聚集函数一起使用列(或表达式),则必须使用 |
一般在使用GROUP BY子句的时候,应该也给出ORDER BY子句。这是保证数据正确排序的唯一方法。
检索按birthday分组的价格大于100的总数
按照总数大小降序
9. SELECT子句顺序
下表在SELECT语句中使用时必须遵循的次序,迄今位置学过的子句
子句 | 说明 | 是否必须使用 |
SELECT | 要返回的列或表达式 | 是 |
FROM | 从中检索数据的表 | 仅在从表选择数据时使用 |
WHERE | 行级过滤 | 否 |
GROUP BY | 分组说明 | 尽在按组计算聚集时使用 |
HAVING | 组级过滤 | 否 |
ORDER BY | 输出排序顺序 | 否 |
LIMIT | 要检索的行数 | 否 |