一、group sets
就是在进行数据分析的时候,可以通过一个select 语句查询多条 来自不同维度的数据汇总,进行数据分析
select ename,deptno,avg(sal) from emp group by ename,deptno grouping sets ((ename,deptno),ename,deptno,());
从四个维度来进行分析 avg(sal),薪资的平均值
(ename,dept):名字和部门
(ename):姓名
(dept):部门
():总的平均值
该函数只是为了简便操作,上面的hql 语句也可以通过
select ename,deptno,avg(sal) from emp group by ename,deptno
union
select ename,null,avg(sal) from emp group by ename
union
select null,deptno,avg(sal) from emp group by deptno
union
select null,null,avg(sal) from emp;

但是比较烦的就是会出现null值,因为涉及UNION操作,所以为了遵循UNION对参与合并的数据集合的要求,GROUPING SETS会把在单个GROUP BY逻辑中没有参与GROUP BY的那一列置为NULL值,使它成为常量占位列。所以分析起来还是比较麻烦的。所以能尽量分开使用。
5332

被折叠的 条评论
为什么被折叠?



