zoukankan      html  css  js  c++  java
  • 分组数据where & having ,group by & order by

     

    Where & Having

    简单讲:having支持所有where操作符,唯一的差别就是where过滤行,having过滤分组。

    Select product_id,Count(*) as orders from products

    Group by product_id

    Having Count(*)>=2

    输出结果如下:

    01                            3

    可以这样说:where在数据分组前进行过滤,having在数据分组后进行过滤

    需要注意的是:having与group by不适用的数据类型为text、ntext、image

     

    Group by & Order by

    Group by:

    分组行,但输出可能不是分组的顺序

    只可能使用选择列或表达式列,而且必须使用每个选择列表达式

    如果与聚集函数一起使用列(或表达式),则必须使用

    Order by:

    排序产生的输出

    任意列都可以使用

    不一定需要

    Select product_id,Sum(quantity*price) as totalprice

    From products

    Group by product_id

    Having Sum(quantity*price)>=50

    Order by totalprice

    输出结果如下:

    01              55

    02              1000

    06              2000

    03              4000

    最后的order by限定了排序,不能仅仅依赖order by

     

    最后,总结一下select 的子句顺序:

    Select 要返回的列或者表达式

    From 从中检索数据的表

    Where 行级过滤

    Group by 分组说明(仅在按组计算聚集时使用)

    Having 组级过滤

    Order by 输出排序顺序

  • 相关阅读:
    悲剧的程序员
    【C++】关于随机函数与概率设置
    布局管理器(一)
    敏捷开发,如何搜集故事
    【Visual C++】CDC与HDC的区别以及相互转换
    IFRAME without src attribute on HTTPS in Internet Explorer
    测量某断代码执行时间-代码
    数据一致性实现技术
    ffmpeg
    Log4j的使用方法
  • 原文地址:https://www.cnblogs.com/howie/p/2603820.html
Copyright © 2011-2022 走看看