• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
素蔓、无暇至永恒
承诺总是那么不堪一击~
博客园    首页    新随笔    联系   管理    订阅  订阅

分组数据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 输出排序顺序

posted @ 2012-07-22 17:27  pain1033  阅读(209)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3