持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情
前言
上篇我们针对MySQL中的单行函数做了一些练习。有兴趣的小伙伴可以阅读(# MySQL学习-函数(十二))。
下面继续学习MySQL中的函数。
聚合函数
聚合函数,也叫聚集函数或者分组函数,它是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。
聚合函数类型(常用)
- AVG()
- SUM()
- MAX()
- MIN()
- COUNT()
示例一
查询员工的平均工资。
SELECT AVG(salary)
FROM employees;
| AVG(salary) |
|---|
| 5000.00 |
使用AVG函数可以求出平均值。
示例二
查询员工的总工资。
SELECT SUM(salary)
FROM employees;
| SUM(salary) |
|---|
| 10000.00 |
使用SUM函数可以求出总值。
总结: SUM与AVG函数只适用于数值类型的字段或变量。
示例三
查询员工的最高与最低工资。
SELECT MAX(salary), MIN(salary)
FROM employees;
| max(salary) | min(salary) |
|---|---|
| 6800.00 | 3200.00 |
使用MAX函数可以求出最大值,使用MIN函数可以求出最小值。
总结: MAX与MIN函数适用于数值类型、字符串类型和日期时间类型的字段或变量。
示例四
COUNT()函数作用:计算指定字段在查询结构中出现的个数。
SELECT COUNT(salary), COUNT(1)
FROM employees;
| COUNT(salary) | COUNT(1) |
|---|---|
| 2 | 2 |
这里查询的是在结构中出现的个数,所以COUNT(salary)与COUNT(1)结果是一样的,同样的,如果是COUNT(2)或者COUNT(*),结果也是一样的。
由此可以得出,如果计算表中有多少条记录,可以使用以下方式实现:
- COUNT(*)
- COUNT(1)
- COUNT(具体字段)
但是第三条使用时需注意,不一定能得到正确的结果。请看以下示例:
示例五
SELECT COUNT(commission_pct), COUNT(1)
FROM employees;
| COUNT(commission_pct) | COUNT(1) |
|---|---|
| 1 | 2 |
可以看到得出的结果并不相等,是因为查询的个数是不包含空值的。这里需要注意。所以上面的总结应改为:
COUNT()函数作用:计算指定字段在查询结构中出现的个数(不包含NULL值)。
上面的函数还可以得到一个公式:AVG = SUM / COUNT。
示例六
如果想查询一个小区的居民平均工资。一般我们会想使用AVG函数。
SELECT AVG(salary)
FROM community;
这样得出的结果,可能是不对的。因为不是所有的居民都有工作,计算的时候也应该把这些值计算在内。所以正确的做法应该是以下这种:
SELECT AVG(IFNULL(salary, 0))
FROM community;
当salary值是null时,使用0来计算。需要把NULL值考虑在内。
今天先学习到这里,明天继续。