高级聚合函数rollup(),cube(),grouping sets()

rollup(),cube(),grouping sets()

上面这几个函数,是对group by分组功能做的功能扩展。

a.rollup()

功能:在原结果基础上追加一行总合计记录

rollup(字段1,字段2)会追加按字段1进行的合计记录,

最后再追加一个总合计记录

select deptno,count(*)

from emp

group by rollup(deptno);

select deptno,job,count(*)

from emp

group by rollup(deptno,job)

order by deptno;

----等价于下面写法-----

select deptno,job,count(*)

from emp

group by deptno,job

union

select deptno,null,count(*)

from emp

group by deptno

union

select null,null,count(*)

from emp

order by deptno;

结论:group by rollup(字段1,字段2,字段3)

--查询按字段1,字段2,字段3分组统计结果

--追加按字段1和字段2的合计

--追加按字段1的合计

--追加总合计记录

b.cube()

select deptno,count(*)

from emp

group by cube(deptno)

order by deptno;

cube(字段1):作用于rollup(字段1)相同。

追加一行总合计记录。

select deptno,job,count(*)

from emp

group by cube(deptno,job)

order by deptno;

--查询group by deptno,job分组统计结果

--查询group by deptno分组统计结果

--查询group by job分组统计结果

--查询没有group by统计结果

结论:group by cube(字段1,字段2,字段3)

--查询group by 字段1,字段2,字段3统计结果

--查询group by 字段1,字段2统计结果

--查询group by 字段1统计结果

--查询group by 字段2统计结果

--查询group by 字段3统计结果

--查询group by 字段2,字段3统计结果

--查询group by 字段1,字段3统计结果

--查询没有group by统计结果

c.grouping sets()

select deptno,count(*)

from emp

group by grouping sets(deptno)

order by deptno;

--上面和没加grouping sets()效果一样

select deptno,job,count(*)

from emp

group by grouping sets(deptno,job)

order by deptno;

--只返回cube规则追加的分组统计结果

--不包含没有group by和group by deptno,job的统计

时间: 2024-11-12 21:55:12

高级聚合函数rollup(),cube(),grouping sets()的相关文章

[转]详解Oracle高级分组函数(ROLLUP, CUBE, GROUPING SETS)

原文地址:http://blog.csdn.net/u014558001/article/details/42387929 本文主要讲解 ROLLUP, CUBE, GROUPING SETS的主要用法,这些函数可以理解为GroupBy分组函数封装后的精简用法,相当于多个union all 的组合显示效果,但是要比 多个union all的效率要高. 其实这些函数在时间的程序开发中应用的并不多,至少在我工作的多年时间中没用过几次,因为现在的各种开发工具/平台都自带了这些高级分组统计功能,使用的方

Rollup Cube Grouping Set使用总结

以上三种在数据汇总统计时经常用到,我尝试以简明易懂地总结出其使用方法和意义 GROUP BY ROLLUP(c1,c2,c3...cN) 分级汇总 1. 汇总从左到右逐级降低,最精细的汇总数据是根据最右的列得到 2.  根据c1得到全部汇总->再根据c2细分汇总->...->根据cN得到最精细汇总. 采购进货表Purchase(货品ID,数量,价格,类型,日期,供应商 ) SELECT MONTH(日期),类型,供应商 ,SUM( 价格) FROM Purchase GROUP BY R

hive grouping sets 等聚合函数

函数说明: grouping sets 在一个 group by 查询中,根据不同的维度组合进行聚合,等价于将不同维度的 group by 结果集进行 union allcube 根据 group by 的维度的所有组合进行聚合rollup 是 cube 的子集,以最左侧的维度为主,从该维度进行层级聚合. -- grouping sets select order_id, departure_date, count(*) as cnt from ord_test where order_id=4

Oracle基本语法&&函数&&子查询&&分页查询&&排序&&集合操作&&高级分组函数

一.  数据库 手工---文件管理---数据库 DB:Database 数据库. DBMS:管理数据库的软件.(oracle) 主流关系数据库: 1.      Oracle 2.      DB2 3.      SQL Server 基本没人使 4.      MySQL  基本没人用,免费 Linux 开源,可以发现漏洞补上 Windows服务器会有补丁,数据易泄漏 eclipse 日食 数据表(Table): 表的行(Row):记录 表的列(Column):字段 二.  关系型数据库 一

10-31C#基础--数据库查询语句之聚合函数、分组

在查询语句时,也存在一些方法和属性,而这些方法在查询时统称为函数,便利查询时使用 聚合函数(都是针对字段操作) 聚合是缩减一系列输入值的表达式,例如缩减为单个值. Select*from biao 1.--求平均分AVG:只能对数字类型的操作,返回一个值(返回非null值的平均值) Select AVG(age)from biao--执行后没有列名 Select AVG(age) as nianing from biao---执行后有列名,加as. --放在select...from之间的一定是

在MongoDB中实现聚合函数

在MongoDB中实现聚合函数 随着组织产生的数据爆炸性增长,从GB到TB,从TB到PB,传统的数据库已经无法通过垂直扩展来管理如此之大数据.传统方法存储和处理数据的成本将会随着数据量增长而显著增加.这使得很多组织都在寻找一种经济的解决方案,比如NoSQL数据库,它提供了所需的数据存储和处理能力.扩展性和成本效率.NoSQL数据库不使用SQL作为查询语言.这种数据库有多种不同的类型,比如文档结构存储.键值结构存储.图结构.对象数据库等等. 我们在本文中使用的NoSQL是MongoDB,它是一种开

SQL Server ->> GROUPING SETS, CUBE, ROLLUP, GROUPING, GROUPING_ID

在我们制作报表的时候常常需要分组聚合.多组聚合和总合.如果通过另外的T-SQL语句来聚合难免性能太差.如果通过报表工具的聚合功能虽说比使用额外的T-SQL语句性能上要好很多,不过不够干脆,还是需要先生成整个结果集然后再聚合,而且最最重要的时很多情况下报表的聚合功能可能没办法达到我们需要的效果.GROUPING SETS, CUBE, ROLLUP, GROUPING, GROUPING_ID这几个聚合函数的作用就是在原始语句的基础上完成很多像财务报表需要的聚合功能. GROUPING SETS相

T-Sql语法:GROUP BY子句GROUPING SETS、CUBE、ROLLUP

#cnblogs_post_body h1 { background-color: #A5A5A5; color: white; padding: 5px } GROUP BY子句 1.ROLLUP() 生成某一维度的分组的小计行,还生成一个总计行. 示例表: select * from student 我们来看一下具体示例: select sex,sclass,sum(score) from student group by rollup(sex,sclass) 如图中所示,ROLLUP()为

SQL Server 之 GROUP BY、GROUPING SETS、ROLLUP、CUBE

原文:SQL Server 之 GROUP BY.GROUPING SETS.ROLLUP.CUBE 1.创建表 Staff CREATE TABLE [dbo].[Staff]( [ID] [int] IDENTITY(1,1) NOT NULL, [Name] [varchar](50) NULL, [Sex] [varchar](50) NULL, [Department] [varchar](50) NULL, [Money] [int] NULL, [CreateDate] [date