在T-SQL语句中使用“GROUP BY”从句时,你可以使用“ROLLUP”,“CUBE”或者“GOURPING SETS”操作符来指定包含在结果集中的附加统计数据。这部分汇总数据在“GROUP BY”列表中表示为“null”值。 这是“null”值的一种特殊用法。然而,在“GROUP BY”列中指定的该列可以包含“null”值,(这种情况下)在该列的结果中也会显示为“null”。
要区分这两种类型的“null”值,可以使用SQL Server提供的“GROUPING”集合函数。该函数可以明确指定“GROUP BY”从句中指定的列是否参与集合计算。 如果结果集中的值参与集合运算了,则“G……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号

TechTarget
官方微博

TechTarget中国
在T-SQL语句中使用“GROUP BY”从句时,你可以使用“ROLLUP”,“CUBE”或者“GOURPING SETS”操作符来指定包含在结果集中的附加统计数据。这部分汇总数据在“GROUP BY”列表中表示为“null”值。
这是“null”值的一种特殊用法。然而,在“GROUP BY”列中指定的该列可以包含“null”值,(这种情况下)在该列的结果中也会显示为“null”。要区分这两种类型的“null”值,可以使用SQL Server提供的“GROUPING”集合函数。该函数可以明确指定“GROUP BY”从句中指定的列是否参与集合计算。
如果结果集中的值参与集合运算了,则“GROUPING”函数返回值“1”。否则,该函数返回值为“0”。我们来看一个例子,了解一下它的用法。在下面的“SELECT”语句中,我基于“Product”表的“Color”列对数据进行分组:
SELECT Color, AVG(ListPrice) AS AvgPrice, COUNT(*) AS TotalAmount, GROUPING(Color) AS AggGroup FROM Production.Product GROUP BY Color WITH ROLLUP |
你可以看到,“GROUP BY”从句带有“WITH ROLLUP”操作符。因为“Color”是“GROUP BY”从句中指定的列,所以该列可以被用在“SELECT”列表的“GROUPING”函数中。
注意:“GROUPING”函数只能被用在“SELECT”列表,“HAVING”从句或者“ORDER BY”从句中。
“GROUPING”函数常常用来指明在“Color”列中显示的值是否是一个分组值,还是参与集合运算的累积值。下表显示了该“SELECT”语句的查询结果:
正如你所预料的,“AggGroup”列对那些颜色color本身(黑色black,蓝色blue,灰色grey,等等)显示值为“0”。这表示颜色color值不参与分组计算;实际上,它仅仅是一组颜色。在“Color”列显示值“NULL”时,“GROUPING”的使用就变得很重要了。
第一个“NULL”的情况,“AggGroup”列返回值为“0”,表示这个“NULL”不是一个集合计算值,而是那些没有对颜色信息赋值的分组数据。
而“Color”列中的第二个“NULL”显示的“AggGroup”值为1,这表示这是“ROLLUP”集合计算的一部分,该组中的所有合计都参与了集合计算。因此,你知道平均价格和数量是为展现整个表总计的一个准备。换句话说,该行包含了所有颜色分组的累计值。
翻译
TechTarget特邀编辑。2003年入软件行业,熟悉软件过程所有环节,对机构信息化的各方面有深入理解和实践经验。现就职于某互联网创业公司,目前关注互联网分布式系统架构和机器学习。喜欢传统文化社科哲学(尤喜《周易》、《老子》),喜健身喜抓举(具备抱人引体向上的能力),喜欢中国象棋(具备盲棋1对2的能力)。
相关推荐
-
Linux支持的引入 推动了SQL Server 2016集成服务的发展
随着SQL Server的不断发展,集成服务也在发生相应的变化。在最新的SSIS更新中,增加Linux支持和SQL Server 2016升级向导。
-
Notre Dame对云端SQL Server性能基准的探索实践
确立SQL Server的性能基准,对于云端迁移来说是至关重要的第一步,一位来自于University of Notre Dame 的DBA表示,他正在试图通过数据库监控软件,找出SQL server的性能基准。
-
横向扩展SQL Server应用程序:提高工作负载的选项
SQL Server管理员面临的最大挑战之一就是扩展数据库以适应更为繁重的数据处理工作负载。然而事情越发复杂的是,虽然Microsoft提供了许多不同的SQL Server可扩展性选项,但它们并不都适合于每种情况。
-
五大技巧构建首个SQL Server容器
容器的世界庞大而复杂,使用者可能会感到困扰,这里我们将列出一些示例,以便引导您顺利完成SQL Server容器的创建和管理。