重学MYSQL之汇总数据

数据库 2020-09-07 844

聚集函数(aggregate),对某些行运行的函数,计算并返回一个值。

检索例子:

  • 确定表中行数
  • 获得表中某些行的和
  • 找出表列(或所有行或某些特定的行)的最大值、最小值、平均值
函数 说明
AVG() 计算某个列的平均值
COUNT() 统计行数量
SUM() 获取单个列的合计值
MAX() 计算列的最大值
MIN() 计算列的最小值

1.AVG函数

AVG()通过对表中行数计数并计算其列值之和,求得该列的平均值。AVG()可用来返回所有列的平均值,也可以用来返回特定列或行的平均值。

SELECT AVG(shop_price) AS avg_price FROM goods_goods;
对产品表中的所有商品的价格求平均值。
SELECT AVG(shop_price) AS avg_price FROM goods_goods WHERE category_id = 7;

对类型id=7的商品的价格求平均值 

注意:AVG()只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。为获取多个列的平均值,必须使用多个AVG()函数。

说明:AVG()函数忽略值为NULL的行。

2.COUNT()函数

COUNT函数进行计数,可利用COUNT()确定表中行的数目或符合特定条件的行的数目。

两种使用方式:

  • 使用COUNT(*)对表中的数目进行计算,不管表列中包含的是空值(NULL)还是非空值。
  • 使用COUNT(column) 对特定列中具有值的行进行计数,忽略NULL值
SELECT COUNT(*) AS count_ FROM goods_goods WHERE category_id = 7; 

检索出商品类型为7的商品数量

3.MAX()函数

MAX()返回指定列中的最大值。MAX()要求指定列名。

SELECT MAX(shop_price) AS max_price FROM goods_goods WHERE category_id = 7;

从商品类型为7的商品中选择价格最大值。

提示:虽然MAX()一般用来找出最大的数值或日期值,MAX()函数忽略列值为NULL的行。

4.MIN()函数

MIN()返回指定列的最小值。

SELECT MIN(shop_price) AS min_price FROM goods_goods WHERE category_id = 7; 

从商品类型为7的商品中选择价格最小值。

5.SUM()函数

返回指定列的和(总计)

SELECT SUM(shop_price) AS total_price FROM goods_goods WHERE category_id = 7; 

计算出商品类型为7的商品的总价格。 

6.聚集不同值

以上5个聚集函数,都可以如下使用:

  • 对所有行执行计算,指定ALL参数或不指定参数
  • 只包含不同的只,指定DISTINCT参数

说明:Access数据库不支持DISTINCT

下面例子使用AVG函数返回特定供应商提供的产品的平均价格。但是使用了DISTINCT,因此平均值只考虑各个不同的价格

SELECT AVG(DISTINCT prod_price) AS avg_price FROM Products WHERE vend_id = 'DLL01' 

注意:如果指定列名,则DISTINCT只能用于COUNT().DISTINCT不能用于COUNT(*),DISTINCT只能用于列名,不能用于计算或表达式。

 7.组合聚集函数

SELECT COUNT(*) AS num_items, MIN(prod_price) AS price_min, MAX(prod_price) AS price_max,AVG(prod_price) AS price_avg FROM Products;

执行4个聚合函数,返回物品数目,物品平均值,物品最高,最低价格 

标签:数据库

文章评论

评论列表

已有0条评论