SQL 中GROUP BY 总结

GROUP BY 子句用来对指定的字段做分组,产生一个汇总信息。

(1)group by语句对select后所选择的字段有一定的限制,即select后没有使用聚合函数的字段必须包含在group by 语句后面的结果集中。(GROUP BY 关键字后跟一个列的列表,称为组合列).

(2)不能对数据类型为 ntext、text、image 或 bit 的列使用 GROUP BY 或 HAVING语句。除非在返回的时候使用数据类型转换函数(SUBSTRING 和 CAST)将他们转换为其他数据类型。

(3)在 GROUP BY 语句中,必须指定表或视图列的名称,而不是使用 AS 子句指派的结果集列的名称。

(4)GROUP BY 语句中的空值,如果分组列包含一个空值则该行将成为结果中的一个组。如果分组列包含多个空值,则这些空值将放入一个组中。

(5)GROUP BY 语句中可以使用 ALL(可选)关键字,返回由GROUP BY 子句生成的所有组。即不受搜索条件的限制(也就是说此时搜索条件不起作用)。

(6)Where, Group By, Having, Order by的执行顺序

首先,WHERE 语句在表或视图中筛选满足条件的记录,然后Group By在WHERE结果集中按指定的列来分组,再按HAVING语句知道的条件筛选出满足条件的组作为结果集,最后按order by 指定的排序方法排序,将排序后的结果集作为最终结果呈现出来。

正是由于这样的执行顺序也就很容易理解为什么只有在ORDER BY语句中才能使用最终结果集中的列名。

(7)GROUP BY中的WHERE 和 HAVING 语句

A:WHERE 搜索条件在进行分组操作之前应用,不能使用聚合函数;而 HAVING 搜索条件在进行分组操作之后应用,可以使用聚合函数。

B:HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数。HAVING 子句可以引用选择列表中显示的任意项。

例: student表

DEPARTMENTIDNAMEGRADE
100SD50
101SDD60
102SSS70
103DDDD80

(1) 统计每个系的人数

select DEPARTMENT, ID from student group by DEPARTMENT 是错误的

正确的是:

select DEPARTMENT, count (ID ) as sumcount from student group by DEPARTMENT

(2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值