Mysql12章-汇总数据

经常需要汇总数据而不用把它们实际检索出来,此MySQL提供了专门的函数。使用这些函数,MySQL查询可用于检索数据,以便分析和报表生成。
检索例子有以下几种
1.确定表中行数(或者满足某个条件或包含某个特定值的行数)。
2.获得表中行组的和。
3.找出表列(或所有行或某些特定的行)的最大值、最小值和平均值

聚集函数

运行在行组上,计算和返回单个值的函数。

函数 说明
AVG() 返回某列的平均值
COUNT() 返回某列的行数
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列之和

AVG()函数

定义:AVG()通过对表中行数计数并计算特定列值之和,求得该列的平均值

  1. 输入:使用AVG()返回products表中所有产品的平均价格:
 select AVG(price) AS avg_price from products
  1. 输出:
    image.png

分析:此SELECT语句返回值avg_Price,它包含products表中所有产品的平均价格。avg_price是一个别名。

COUNT()函数

定义:COUNT()函数进行计算。可利用COUNT()确定表中行的数目或符合特定条件的行的数目。
COUNT()函数有两种使用方式。

  • 使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。
  • 使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值
举例
  1. 输入:使用COUNT()统计患者表数量
SELECT  COUNT(*)  FROM patient p WHERE p.drugstore_code ='935'
  1. 输出


    image.png

1,输入:

SELECT  COUNT(p.phone2)  FROM patient p WHERE p.drugstore_code ='935'

2.输出


image.png

MAX()函数

定义:MAX()返回指定列中的最大值。MAX()要求指定列名
1,输入:

SELECT  MAX(p.age)  FROM patient p

2.输出


image.png

3.分析

MAX(),返回patient 表中age 最大的年龄

MIN()函数

定义:MIN()的功能正好与MAX()功能相反,它返回指定列的最小值
1,输入:

SELECT  MIN(p.age)  FROM patient p

2.输出


image.png

3.分析

MIN(),返回patient 表中age 最小的年龄

SUM()函数

定义:SUM()用来返回指定列值的和(总计)

例子1,orderitems表包含订单中实际的物品,每个物品有相应的数量(quantity)。可如下检索所订购物品的总数(所有quantity值之和)

1.输入:

select SUM(quantity) AS items_oedered from orderitems

2.输出:


image.png

3.分析

函数SUM(quantity)返回订单中所有物品数量之和,WHERE子句保证只统计某个物品订单中的物品。

例2:SUM()也可以用来合计计算值。在下面的例子中,合计每项物品的item_price*quantity,得出总的订单金额

1.输入:

select SUM(item*quan) AS total_price from orderitems where order_num=200005

2.输出


image.png

3.分析

函数SUM(item*quan)返回订单中所有物品价钱之和,WHERE子句同样保证只统计某个物品订单中的物品。

聚集不同值

函数中使用 DISTINCT

例如:使用AVG()函数返回特定供应商提供的产品的平均价格。使用了DISTINCT参数,均值只考虑各个不同的年龄:
1.输入:

--- 未使用
SELECT  AVG(p.age)   FROM patient p
--- 已使用
SELECT   AVG(DISTINCT p.age)   FROM patient p

2.输出


未使用.png

已使用.png
注意

如果指定列名,则DISTINCT只能用于COUNT()。DISTINCT不能用于COUNT(*),因此不允许使用COUNT(DISTINCT),否则会产生错误。类似地,DISTINCT必须使用列名,不能用于计算或表达式。

组合聚集函数

SELECT 语句可根据需要包含多个聚集函数
举例:查询患者表中,平均年龄,最大年龄,最小年龄
1.输入

SELECT   AVG(DISTINCT p.age),MIN(p.age),MAX(p.age)   FROM patient p

2.输出


image.png

3.分析

这里用单条select 语句执行了3个聚集计算,返回平均年龄,最大年龄,最小年龄

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容