• 确定表中的行数
    • 获得表中行组的和
    • 找出表列(所有行,特定行)的最大,最小,平均值。
      上面的例子需要对表中的数据汇总,而不是实际数据本身,所以可以不需要返回时间数据,浪费资源

    聚集函数(aggregate function)

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

    • AVG(): 返回所有列或者某个列平均值。
      计算表中的行数并计算特定列值之和,求得改列的平均值。

    解释: 计算Products表中所以产品的平均价格。

    计算特定行的平均值,

    1. -> FROM Products
    2. -> WHERE vend_id = 'DLL01';
    3. +-----------+
    4. | avg_price |
    5. +-----------+
    6. | 3.865000 |
    7. +-----------+
    8. 1 row in set (0.01 sec)

    解释: WHERE 子句过滤出DELL01平均值,并返回该供应商产品的平均值。

    • COUNT()函数计算表中行的数目或符合特定条件的涵数目。
      • 忽略表列中包含的空值(NULL)与非空值,对表中数目进行计算。
      • 使用COUNT(column) 对特定列中具有值的行进行计算,忽略NULL值。
        1. mysql> SELECT COUNT(*) AS num_cust
        2. +----------+
        3. | num_cust |
        4. +----------+
        5. | 5 |
        6. +----------+
        7. 1 row in set (0.01 sec)

    值返回有email地址的客户计数,结果为3,表述只有3个客户有电子邮件地址。

    MAX()返回指定的列中最大的值

    1. -> FROM Products;
    2. +-----------+
    3. | max_price |
    4. +-----------+
    5. | 11.99 |
    6. +-----------+
    7. 1 row in set (0.01 sec)

    解释: 返回Products表中最贵的物品价格。

    • MIN() 返回最小值

      1. mysql> SELECT MIN(prod_price) AS min_price
      2. -> FROM Products;
      3. +-----------+
      4. | min_price |
      5. +-----------+
      6. | 3.49 |
      7. 1 row in set (0.00 sec)

    解释:返回计算quantity 值之和,WHERE子句限制值统计某个订单的值。

    用SUM()组合计算值

    1. mysql> SELECT SUM(item_price*quantity) AS total_price
    2. -> WHERE order_num = 20005;
    3. +-------------+
    4. | total_price |
    5. +-------------+
    6. | 1648.00 |
    7. +-------------+
    8. 1 row in set (0.01 sec)

    解释: 合计所以订单 item_price价格 乘以quantity数量之和的总数,WHERE子句某个订单物品。

    • 对所有的行执行计算,指定ALL参数或者不改参数(默认是ALL行为)
    • 只包含不同的值,指定DISTINCT参数
      1. mysql> SELECT AVG(DISTINCT prod_price) AS avg_price
      2. -> FROM Products
      3. -> WHERE vend_id = 'DLL01';
      4. +-----------+
      5. | avg_price |
      6. +-----------+
      7. | 4.240000 |
      8. +-----------+

    解释:与上一个例子不同的是,排除prod_price 中相同的值,只计算不同的值,数量少了所以平均值高了。

    • 聚集函数用来总汇数据, SQL支持5个聚集函数,计算速度比在客户端快多。