zoukankan      html  css  js  c++  java
  • 10 分组数据

    10.1 创建分组

    分组是在SELECT语句的GROUP BY子句中建立的。
    例如:

    SELECT vend_id, COUNT(*) AS num_prods
    FROM Products
    GROUP BY vend_id;

    输出结果是这个样子:

    上面的SELECT语句指定了两个列, vend_id包含产品供应商的ID, num_prods为计算字段(用COUNT(*)函数建立)。 GROUP BY子句指示MySQL按vend_id排序并分组数据。这导致对每个vend_id而不是整个表 计算num_prods一次。从输出中可以看到,供应商1001有3个产品,供应商 1002有2个产品,供应商1003有7个产品,而供应商1005有2个产品。
    GROUP BY子句指示MySQL分组数据,然后对每个组而不是 整个结果集进行聚集。
    注意:GROUP BY子句必须出现在WHERE子句之后, ORDER BY子句之前。

    10.2 过滤分组

    HAVING非常类似于WHERE。事实上,目前为止所学过的所有类型的WHERE子句都可以用HAVING来替代。唯一的差别是 WHERE过滤行,而HAVING过滤分组。

    例如:

    SELECT cust_id, count(*) AS orders
    FROM Orders
    GROUP BY cust_id
    HAVING COUNT(*) >= 2;

    输出结果是:

    这条SELECT语句的前3行类似于上面的语句。最后一行增加了 HAVING子句,它过滤COUNT(*) >=2(两个以上的订单)的那些分组。

    HAVING和WHERE的差别 :
    WHERE在数据分组前进行过滤, HAVING在数据分组后进行过滤。

    看下面的例子:

    SELECT cust_id, COUNT(*) AS num_prods
    FROM Products
    WHERE prod_price >= 10
    GROUP BY vend_id
    HAVING COUNT(*) >= 2;

    输出结果:

    WHERE子句过滤所有prod_price至少为10的 行。然后按vend_id分组数据, HAVING子句过滤计数为2或2以上的分组。如果没有WHERE子句,将会多检索出两行(供应商1002,销售的所有产品价格都在10以下;供应商1001,销售3个产品,但只有一个产品的价格大于等于10


    10.3 分组和排序

    一般在使用GROUP BY子句时,应该也给 ORDER BY子句。这是保证数据正确排序的唯一方法。千万不要仅依赖GROUP BY排序数据。
    例如:

    SELECT order_num, SUM(quantity * item_price ) AS ordertotal
    FROM Ordertimes
    GROUP BY order_num
    HAVING SUM(quantity * item_price ) >= 50;

    结果是:

    为按总计订单价格排序输出,需要添加ORDER BY子句,如下所示:

    SELECT order_num, SUM(quantity * item_price ) AS ordertotal
    FROM Ordertimes
    GROUP BY order_num
    HAVING SUM(quantity * item_price ) >= 50
    ORDER BY ordertotal;

    输出结果是:

    GROUP BY子句用来按订单号(order_num列) 分组数据,以便SUM(*)函数能够返回总计订单价格。 HAVING子句过滤数据,使得只返回总计订单价格大于等于50的订单。最后, 用ORDERBY子句排序输出。

    10.4 SELECT子句顺序


    下面回顾一下SELECT中子句的顺序:


    SELECT子句及其顺序





  • 相关阅读:
    用wamp配置的环境,想用CMD连接mysql怎么连
    Mysql删除表
    MySQL创建表
    Leetcode 130. Surrounded Regions
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 110. Balanced Binary Tree
    Leetcode 98. Validate Binary Search Tree
    Leetcode 99. Recover Binary Search Tree
    Leetcode 108. Convert Sorted Array to Binary Search Tree
    Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
  • 原文地址:https://www.cnblogs.com/xlzfdddd/p/10154041.html
Copyright © 2011-2022 走看看