sql中GROUPING的作用是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql中GROUPING的作用是啥相关的知识,希望对你有一定的参考价值。

能不能力举下呢,谢谢啦

sql中GROUPING用于区分标准空值和由 ROLLUP、CUBE 或 GROUPING SETS 返回的空值。作为 ROLLUP、CUBE 或 GROUPING SETS 操作结果返回的 NULL 是 NULL 的特殊应用。它在结果集内作为列的占位符,表示全体。

扩展资料:

grouping sets是等价于带union all的group by子句,之所以是等价而不是等于,是因为它们的顺序不一样。grouping sets并不只是group by的语法糖,这两者内部的执行过程也是全然不同的,性能方面grouping sets能减少IO操作但会增加CPU占用时间。

另外在grouping sets中如果将括号中的参数换个位置那么结果也将改变,这说明结果集中的顺序与参数的位置也有关。

参考技术A GROUPING
是一个聚合函数,它产生一个附加的列,当用 CUBE 或 ROLLUP 运算符添加行时,附加的列输出值为1,当所添加的行不是由 CUBE 或 ROLLUP 产生时,附加列值为0。

仅在与包含 CUBE 或 ROLLUP 运算符的 GROUP BY 子句相联系的选择列表中才允许分组。

语法
GROUPING ( column_name )

参数
column_name

是 GROUP BY 子句中用于检查 CUBE 或 ROLLUP 空值的列。

返回类型
int

参考资料:SQL Server T-SQL帮助

本回答被提问者采纳
参考技术B 分组啊
比如一个图书资料表
要求某类图书的平均价格
这里就要分组了
比如把历史类书籍分到一个组,再求平均价格咯
参考技术C 是SQL SERVER中的一个函数。

指示是否聚合 GROUP BY 列表中的指定列表达式。在结果集中,如果 GROUPING 返回 1 则指示聚合;返回 0 则指示不聚合。如果指定了 GROUP BY,则
GROUPING 只能用在 SELECT <select> 列表、HAVING 和 ORDER BY 子句中。

GROUPING 用于区分标准空值和由 ROLLUP、CUBE 或 GROUPING SETS 返回的空值。作为 ROLLUP、CUBE 或
GROUPING SETS 操作结果返回的 NULL 是 NULL 的特殊应用。它在结果集内作为列的占位符,表示全体
详细教程例子:http://www.mb5u.com/biancheng/mssql/mssql_96945.html
记得顶一下哦。
参考技术D

MySQL 8.0 新增了 GROUPING() 函数,用来理清 GROUP BY with rollup 子句检索后所产生的每个分组汇总结果。 grouping 可用在分组列,having 子句以及 order by 子句。

GROUPING() 函数用来返回每个分组是否为 ROLLUP 结果,是为 1 否为 0。从结果中,很容易就能区分哪些 NULL 是正常记录,哪些是 ROLLUP 的结果。

GROUPING() 函数不仅仅是针对单个字段来统计汇总值,还可以针对多个字段。

此时会发现,GROUPING() 函数对多个字段结果并非只有 1 和 0,还有一个值为 3。在 GROUPING() 函数包含多个参数时,按照以下方式来返回结果:

    GROUPING(r1,r2) 等价于 GROUPING(r2)  + GROUPING(r1) << 1

    GROUPING(r1,r2,r3,...) 等价于 GROUPING(r3) + GROUPING(r2) << 1 + GROUPING(r1) << 2

    以此类推

    GROUPING 语句还可以用在 HAVING 子句里,比如用 GROUPING 子句来过滤掉非 ROLLUP 的结果。

SQL中unique作用是啥

作用为:唯一约束保证在一个字段或者一组字段里的数据与表中其它行的数据相比是唯一的。

unique():返回参数数组中所有不同的值,并按照从小到大排序。

return_index=True: 返回新列表中的每个元素在原列表中第一次出现的索引值,因此元素个数与新列表中元素个数一样。

return_inverse=True:返回原列表中的每个元素在新列表中出现的索引值,因此元素个数与原列表中元素个数一样。



扩展资料:

在关系数据库实现过程中,第一步是建立关系模式,定义基本表的结构,即该关系模式是哪些属性组成的,每一属性的数据类型及数据可能的长度、是否允许为空值以及其它完整性约束条件。

定义基本表:

CREATE TABLE([列级完整性约束条件]

[,[列级完整性约束条件]]…

[,[列级完整性约束条件]]

[,表列级完整性约束条件]); 

说明:

①中是SQL语句必须定义的部分,[]中是SQL语句可选择的部分,可以省略的。

②CREATE TABLE表示是SQL的关键字,指示本SQL语句的功能。

参考技术A 主要是约束数据完整性,如:员工属於某个部门,部门ID必须存在但也可为空. 参考技术B 本字段值不能重复。本回答被提问者采纳 参考技术C 定义唯一索引约束,该字段不能重复,可以有一个null.

以上是关于sql中GROUPING的作用是啥的主要内容,如果未能解决你的问题,请参考以下文章

SPARK SQL中 Grouping sets转Expand怎么实现的(逻辑计划级别)

T-Sql语法:GROUP BY子句GROUPING SETSCUBEROLLUP

从多个表中创建 Sql Server VIEW GROUPing BY,选择子查询作为别名

oracle 中grouping 函数 的使用?

Oracle分组小计总计示例(grouping sets的使用)

介绍一种非常好用汇总数据的方式GROUPING SETS