高级聚合函数rollup(),cube(),grouping sets()
2024-08-31 10:03:58
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的统计
最新文章
- 关于SQL注入和如何防止
- Android Gson的使用总结
- 一起学HTML基础-CSS样式表常用样式属性
- day5----正则
- linux 安装vpn
- 《MySQL悲观锁总结和实践》乐观锁
- Handle类的用法
- ruby安装插件报错
- Ant build.xml 批量打渠道包回顾!打第三方jar包总结
- bzoj2789
- .IIS7如何设置301重定向详解
- 解决Unity3d 4.3 动画系统带来的烦恼
- vim 设置默认显示行号
- 纯CSS3美化单选按钮radio
- AngualrJS之服务器端通信
- BBS论坛(二十八)
- 银盒子智慧餐厅硬件尺寸规格&;推荐机型
- 【转】python类中super()和__init__()的区别
- vue2总结
- 聊聊Java内存模型