6.1 聚合函数列表
当您在 SQL 中使用带运算符的行分组时GROUP BY,您可以SELECT在语句中使用对分组数据进行操作的函数。此类函数也称为聚合函数。
以下是最受欢迎的列表:
| # | 功能 | 描述 |
|---|---|---|
| 1个 | 数数() | 返回一组值的个数 |
| 2个 | 和() | 返回一组值的总和 |
| 3个 | 最大限度() | 返回组的最大值 |
| 4个 | 最小值() | 返回组的最小值 |
| 5个 | 平均值() | 返回一组的平均值 |
| 6个 | 位与() | 对所有组值执行按位与 |
| 7 | 位或() | 对所有组值执行按位或 |
| 8个 | BIT_异或() | 对所有组值执行按位异或 |
| 9 | GROUP_CONCAT() | 将所有组值连接成一个字符串 |
现在让我们看一些使用聚合函数的例子。
6.2 分析员工工资
让我们从employee表中计算一些关于我们员工的统计数据。
问题一:我们有多少员工?
如果我们想找出表中所有记录的数量,那么我们可以为此使用聚合函数COUNT。该请求将如下所示:
SELECT COUNT(*) FROM employee
MySQL 将返回数字 6 作为响应。我们部门有 6 名员工,包括一只猫。好的。
问题二:我们每个月给所有员工发多少钱?
要回答这个问题,我们需要对所有员工的工资求和。为此,我们使用聚合函数SUM()
该请求将如下所示:
SELECT SUM(salary) FROM employee
注意,这次我们需要指定我们汇总的是哪一列的值。我们指定了salary列。我们不能只对表中的所有字段求和。
而MySQL会返回数字461000作为答案。我们部门有6名员工,工资是461千。太多了。
最后,第三个问题:我们部门的最高和最低工资是多少?好吧,让我们计算一下平均工资。为此,我们需要函数MIN,MAX和AVG。
这次查询会有点复杂,看起来像这样:
SELECT MIN(salary), AVG(salary), MAX(salary)
FROM employee
此查询的结果将是:
| 最低(工资) | AVG(工资) | MAX(工资) |
|---|---|---|
| 1000 | 76833.3333 | 200000 |
我们部门的最低工资是 1,000 美元——非常好。顶薪20万,这可是导演啊。
但是平均工资太高了,你需要以某种方式优化成本。让我们雇用另一只猫,仅此而已:)
GO TO FULL VERSION