MySQL学习-函数(十三)

81 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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.003200.00

使用MAX函数可以求出最大值,使用MIN函数可以求出最小值。

总结: MAX与MIN函数适用于数值类型、字符串类型和日期时间类型的字段或变量。

示例四

COUNT()函数作用:计算指定字段在查询结构中出现的个数。

SELECT COUNT(salary), COUNT(1)
FROM employees;
COUNT(salary)COUNT(1)
22

这里查询的是在结构中出现的个数,所以COUNT(salary)与COUNT(1)结果是一样的,同样的,如果是COUNT(2)或者COUNT(*),结果也是一样的。

由此可以得出,如果计算表中有多少条记录,可以使用以下方式实现:

  1. COUNT(*)
  2. COUNT(1)
  3. COUNT(具体字段)

但是第三条使用时需注意,不一定能得到正确的结果。请看以下示例:

示例五

SELECT COUNT(commission_pct), COUNT(1)
FROM employees;
COUNT(commission_pct)COUNT(1)
12

可以看到得出的结果并不相等,是因为查询的个数是不包含空值的。这里需要注意。所以上面的总结应改为:
COUNT()函数作用:计算指定字段在查询结构中出现的个数(不包含NULL值)。

上面的函数还可以得到一个公式:AVG = SUM / COUNT。

示例六

如果想查询一个小区的居民平均工资。一般我们会想使用AVG函数。

SELECT AVG(salary)
FROM community;

这样得出的结果,可能是不对的。因为不是所有的居民都有工作,计算的时候也应该把这些值计算在内。所以正确的做法应该是以下这种:

SELECT AVG(IFNULL(salary, 0))
FROM community;

当salary值是null时,使用0来计算。需要把NULL值考虑在内。

今天先学习到这里,明天继续。