在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”集合计算的一部分,该组中的所有合计都参与了集合计算。因此,你知道平均价格和数量是为展现整个表总计的一个准备。换句话说,该行包含了所有颜色分组的累计值。
翻译
相关推荐
-
云端SQL Server高可用性最佳做法
与内部部署相比,在云端运行SQL Server可为数据库软件用户提供更多的灵活性和可扩展性,也可能更省钱。但云 […]
-
绘制数据关系图的利器:SQL Server 图像数据库工具
SQL Server 2017新增了图形数据库功能,你可以使用图结构来表示不同数据元素之间的关系。
-
如何在Azure部署时选择合适的SQL Server?
想要在Azure上运行SQL Server,企业一般会面临两种选择:在Azure虚拟机上安装SQL Server或使用Azure SQL Database。
-
Linux支持的引入 推动了SQL Server 2016集成服务的发展
随着SQL Server的不断发展,集成服务也在发生相应的变化。在最新的SSIS更新中,增加Linux支持和SQL Server 2016升级向导。