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 输出排序顺序

  • 相关阅读:
    申诉电信ADSL宽带限速
    回帖整理
    继续无题
    抛砖引玉,征集体会
    关于程序组织和组织技巧的学习
    周鸿祎行
    无题
    用此书为例讨论下软件思想的学习
    笔记
    方法论究竟为社区提供了什么
  • 原文地址:https://www.cnblogs.com/howie/p/2603820.html
Copyright © 2011-2022 走看看