从这一节开始学习SQL如何对数据进行统计,SQL默认支持一组统计表达式,他们可以完成数据统计,如:计数,求平均等。 以Movies表数据为例,这些统计表达式可以帮我们回答以下问题:"Pixar公司生产了多少电影?", 或 "每一年的票房冠军是谁?".
SELECT AGG_FUNC(column_or_expression) AS aggregate_description, …
FROM mytable
WHERE constraint_expression;
如果不指明如何分组,那统计函数将对查询结果全部数据进行统计,当然每一个统计也可以像之前用AS来取一个别名,以增加可读性.
下面介绍几个常用统计函数:
Function | Description |
COUNT(*), COUNT(column) | 计数!COUNT(*) 统计数据行数,COUNT(column) 统计column非NULL的行数. |
MIN(column) | 找column最小的一行. |
MAX(column) | 找column最大的一行. |
AVG(column) | 对column所有行取平均值. |
SUM(column) | 对column所有行求和. |
Docs: MySQL, Postgres, SQLite, Microsoft SQL Server |
GROUP BY
数据分组语法可以按某个col_name对数据进行分组,如:GROUP BY Year
指对数据按年份分组,
相同年份的分到一个组里。如果把统计函数和GROUP BY
结合,那统计结果就是对分组内的数据统计了.
GROUP BY
分组结果的数据条数,就是分组数量,比如:GROUP BY Year
,全部数据里有几年,就返回几条数据,
不管是否应用了统计函数.
SELECT AGG_FUNC(column_or_expression) AS aggregate_description, …
FROM mytable
WHERE constraint_expression
GROUP BY column;
这节练习基于 Employees 表. 我们来统计有多少雇员, 以及计算一下团队相关的一些指标数据. 马上开始吧!.