MySQL学习笔记第八章(聚合函数)

第08章聚合函数

上一章讲到了 SQL 单行函数。实际上 SQL 函数还有一类,叫做聚合(或聚集、分组)函数,它是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。

1.聚合函数介绍

  • 什么是聚合函数
    聚合函数作用于一组数据,并对一组数据返回一个值。
    在这里插入图片描述
  • 聚合函数类型
    AVG()
    SUM()
    MAX()
    MIN()
    COUNT()
  • 聚合函数语法
    在这里插入图片描述
  • 聚合函数不能嵌套调用。比如不能出现类似“AVG(SUM(字段名称))”形式的调用。

1.1 AVG和SUM函数

可以对数值型数据使用AVG 和 SUM 函数。

#1.1 AVG/SUM:只适用于数值类型的字段(或变量)
SELECT AVG(salary), MAX(salary),MIN(salary), SUM(salary) 
FROM employees;
#输出
+-------------+-------------+-------------+-------------+
| AVG(salary) | MAX(salary) | MIN(salary) | SUM(salary) |
+-------------+-------------+-------------+-------------+
| 6461.682243 |    24000.00 |     2100.00 |   691400.00 |
+-------------+-------------+-------------+-------------+
1 row in set (0.00 sec)
#如下操作没有意义
SELECT SUM(last_name),AVG(last_name),SUM(last_name)
FROM employees;

1.2 MIN和MAX函数

可以对任意数据类型的数据使用 MIN 和 MAX 函数。

SELECT MIN(hire_date), MAX(hire_date)
FROM employees;
#输出
+----------------+----------------+
| MIN(hire_date) | MAX(hire_date) |
+----------------+----------------+
| 1987-06-17     | 2000-04-21     |
+----------------+----------------+
1 row in set (0.00 sec)

1.3 COUNT函数

  • COUNT(*)返回表中记录总数,适用于任意数据类型。
#1.3 COUNT
#1.3.1 作用:计算指定字段在查询结构中出现的个数
SELECT COUNT(employee_id),COUNT(salary),COUNT(2*salary),COUNT(1),COUNT(2),COUNT(*)
FROM employees;
#输出
+--------------------+---------------+-----------------+----------+----------+----------+
| COUNT(employee_id) | COUNT(salary) | COUNT(2*salary) | COUNT(1) | COUNT(2) | COUNT(*) |
+--------------------+---------------+-----------------+----------+----------+----------+
|                107 |           107 |             107 |      107 |      107 |      107 |
+--------------------+---------------+-----------------+----------+----------+----------+
1 row in set (0.00 sec)
#如果计算表中有多少条记录,该如何实现?
#方式1:COUNT(*)
#方式2:COUNT(1)
#方式3:COUNT(具体字段):不一定对!
  • COUNT(expr) 返回expr不为空的记录总数。
#1.3.2 注意:计算指定字段出现的个数时,是不计算NULL值的,也就是COUNT会过滤NULL。
SELECT COUNT(commission_pct)
FROM employees;#35条记录

SELECT commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;

#1.3.3 AVG=SUM/COUNT, SUM会过滤掉NULL
SELECT AVG(salary),SUM(salary)/COUNT(salary),
AVG(commission_pct),SUM(commission_pct)/COUNT(commission_pct),
SUM(commission_pct)/107
FROM employees;
#输出
+-------------+---------------------------+---------------------+-------------------------------------------+-------------------------+
| AVG(salary) | SUM(salary)/COUNT(salary) | AVG(commission_pct) | SUM(commission_pct)/COUNT(commission_pct) |SUM(commission_pct)/107 |
+-------------+---------------------------+---------------------+-------------------------------------------+-------------------------+
| 6461.682243 |               6461.682243 |            0.222857 |                                  0.222857 |              0.072897   |
+-------------+---------------------------+---------------------+-------------------------------------------+-------------------------+
1 row in set (0.00 sec)
#需求:查询公司中平均奖金率(没有奖金的人也要算在内)
#错误的!
SELECT AVG(commission_pct)
FROM employees;
#输出
+---------------------+
| AVG(commission_pct
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值