Group By All [expressions] :

 Group By All [expressions] :
Group By All + 分组字段, 这个和Group By [Expressions]的形式多了一个关键字ALL。这个关键字只有在使用了where语句且where条件筛选掉了一些组的情况下才可以看出效果。在SQL Server 2000的联机帮助中,对于Group By All是这样进行描述的:
如果使用 ALL 关键字,那么查询结果将包括由 GROUP BY 子句产生的所有组,即使某些组没有符合搜索条件的行。没有 ALL 关键字,包含 GROUP BY 子句的 SELECT 语句将不显示没有符合条件的行的组。
其中有这么一句话“如果使用ALL关键字,那么查询结果将包含由Group By子句产生的所有组...没有ALL关键字,那么不显示不符合条件的行组。”这句话听起来好像挺耳熟的,对了,好像和LEFT JOIN 和 RIGHT JOIN 有点像。其实这里是类比LEFT JOIN来进行理解的。还是基于如下这样一个数据集:
FruitName
ProductPlace
Price
Apple
China
$1.1
Apple
Japan
$2.1
Apple
USA
$2.5
Orange
China
$0.8
Banana
China
$3.1
Peach
USA
$3.0
首先我们不使用带ALL关键字的Group By语句:
1
2
3
4
5
6
7
SELECTCOUNT(*) AS 水果种类,ProductPlaceAS出产国
 
FROMT_TEST_FRUITINFO
 
WHERE (ProductPlace<> 'Japan' )
 
GROUPBYProductPlace
那么在最后结果中由于Japan不符合where语句,所以分组结果中将不会出现Japan。
如今我们加入ALL关键字:
1
2
3
4
SELECTCOUNT(*) AS 水果种类,ProductPlaceAS出产国
FROMT_TEST_FRUITINFO
WHERE (ProductPlace<> 'Japan' )
GROUPBYALLProductPlace
重新运行后,我们可以看到Japan的分组,但是对应的“水果种类”不会进行真正的统计,聚合函数会根据返回值的类型用 默认值0或者NULL来代替聚合函数的返回值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值