• 09 汇总数据


    1.聚集函数(aggregate function

    对某些行运行的函数,计算并返回一个值。

    汇总表中的数据,而不需要实际数据本身的SQL查询有:

    确定表中行数;

    获得表中某些行的和;

    找出表列的最大值、最小值、平均值。

    为了方便这种类型的检索,SQL给出了5个聚集函数。

    函数

    语法(MySQL

    AVG()

    返回某列的平均值

    COUNT()

    返回某列的行数

    MAX()

    返回某列的最大值

    MIN()

    返回某列的最小值

    SUM()

    返回某列值之和

    (1)AVG()函数

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

    为了计算Products表中所有产品的平均价格,输入:

    SELECT AVG(prod_price) AS avg_price

    FROM Products;

    输出:

    为了返回特定供应商所提供产品的平均价格,输入:

    SELECT AVG(prod_price) AS avg_price

    FROM Products

    WHERE vend_id = 'DLL01';

    输出:

    AVG()只能用于单个列,为了获得多个列的平均值,必须使用AVG()函数。AVG()函数忽略列值为NULL的行。

    (2)COUNT()函数

    进行计数,可确定表中行的数目或符合特定条件的行的数目。

    使用COUNT(*)对表中行的数目进行极速,不管表列中包含的是空值(NULL)还是非空值;

    使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。

    为了返回Customers表中顾客的总数,输入:

    SELECT COUNT(*) AS num_cust

    FROM Customers;

    输出:

    只对具有电子邮件地址的客户计数,输入:

    SELECT COUNT(cust_email) AS num_cust

    FROM Customers;

    输出:

    (3)MAX函数

    返回列中的最大值,要求指定列名。

    输入:

    SELECT MAX(prod_price) AS max_price

    FROM Products;

    输出:

    (4)MIN函数

    返回列中的最小值,要求指定列名。

    输入:

    SELECT MIN(prod_price) AS min_price

    FROM Products;

    输出:

    (5)SUM()函数

    用来返回指定列值的和(总计)。

    OrderItems包含订单中实际的物品,每个物品有相应的数量。为了检索所订购物品的总数(所有quantity值之和),输入:

    SELECT SUM(quantity) AS items_ordered

    FROM OrderItems

    WHERE order_num = 20005;

    输出:

    SUM()也可以用来合计计算值。为了合计每项物品的item_price*quantity,得出总的订单金额,输入:

    SELECT SUM(item_price*quantity) AS total_price

    FROM OrderItems

    WHERE order_num = 20005;

    输出:

    SUM()函数忽略列值为NULL的行。

    2.聚集不同值

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

    对所有行执行计算,指定ALL参数或不知道参数(因为ALL是默认行为);

    只包含不同的值,指定DISTINCT参数。DISTINCT必须使用列名,不能用于计算或者表达式。

    下面使用AVG()函数返回特定供应商提供产品的平均价格,若使用DISTINCT参数,平均值只考虑各个不同的价格。

    输入:

    SELECT AVG(DISTINCT prod_price) AS avg_price

    FROM Products

    WHERE vend_id = 'DLL01';
    输出:

    使用了DISTINCT后的avg_price更高,这是因为有多个物品具有相同的较低价格,排除它们提升了平均价格。

    3.组合聚集函数

    输入:

    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;

    输出:

    这里用单条SELECT语句执行了4个聚集计算,返回4个值:Products表中物品的数目,产品杰哥的最高值、最低值以及平均值。

  • 相关阅读:
    FireFox 火狐浏览器 新标签页的常用网站恢复默认设置
    有关BT下载的Tracker
    优化分页展示
    导航条
    Bootstrap栅格系统
    分页器
    浅谈深拷贝和浅拷贝
    浅谈==和===
    浅谈typeof 和instanceof
    浅谈JavaScript中的this
  • 原文地址:https://www.cnblogs.com/Sumomo0516/p/6131527.html
Copyright © 2020-2023  润新知