您现在的位置是:亿华云 > IT科技类资讯
超详细的5个Oracle数据库分组函数总结
亿华云2025-10-09 01:32:40【IT科技类资讯】4人已围观
简介概述今天主要分享下Oracle数据库分组函数group by 、 rollup、cude、grouping 、grouping sets的常用用法,以下以Oracle自带schema做演示。1、gro
概述
今天主要分享下Oracle数据库分组函数group by 、超详 rollup、据库cude、分组grouping 、函数grouping sets的总结常用用法,以下以Oracle自带schema做演示。超详
1、据库group by的分组使用
--根据DEPTNO和JOB进行分组。求相同DEPTNO,函数相同JOB的员工工资总和。
SELECT E.DEPTNO,总结E.JOB,SUM(E.SAL) FROM EMP E GROUP BY E.DEPTNO,E.JOB ORDER BY E.DEPTNO;
2、group by 配合rollup的超详使用
rollup()--可以使用一个或者多个参数。意思是据库从右向左进行数据的汇总统计,并生成一行,分组rollup是函数个统计函数。
以下是总结根据分组情况进行统计,最终进行全部汇总。
(1)简单的使用rollup--生成一行新数据。(要生成新的一行数据,还可以使用UNION ALL)
SELECT D.DUMMY FROM DUAL D GROUP BY ROLLUP(D.DUMMY);(2)先根据E.DEPTNO,E.JOB进行分组,然后从右向左
SELECT E.DEPTNO,E.JOB,SUM(E.SAL) FROM EMP E GROUP BY ROLLUP(E.DEPTNO,E.JOB) ORDER BY E.DEPTNO;针对以上的使用ROLLUP的结果的理解:
a:首先根据GROUP BY E.DEPTNO,E.JOB查询出9条数据(除4,云南idc服务商8,12,13外),在根据rollup的定义,从右向左,对ROLLUP中的参数进行小计
首先根据JOB(对所有的JOB进行汇总),汇总出4,8,12行,在根据E.DEPTNO(对所有的DEPTNO进行汇总),汇总出第十三行数据。
(3) 特殊情况
SELECT E.DEPTNO,E.JOB,SUM(E.SAL) FROM EMP E GROUP BY ROLLUP(E.JOB,E.DEPTNO) ORDER BY E.DEPTNO;理解:首先根据GROUP BY E.DEPTNO,E.JOB查询出前九条数据,其次对E.DEPTNO进行汇总,但是必须考虑JOB,也就是相同的JOB,的所有的工资总和,所以出现下面五条数据。
3、group by 配合cube的使用
SELECT E.DEPTNO,E.JOB,SUM(E.SAL) FROM EMP E GROUP BY CUBE(E.DEPTNO,E.JOB) ORDER BY E.DEPTNO;理解:CUBE会对条件中的每一个条件进行单独的汇总:即对单独的列进行汇总
GROUP BY CUBE(E.DEPTNO,E.JOB)首先根据:GROUP BY E.DEPTNO,E.JOB查询数据,其次对E.JOB进行汇总(不考虑DEPTNO,源码下载单独汇总,而ROLLUP是在同一个DEPTNO下面)再对E.DEPTNO进行汇总,最后全部汇总。
cube(a,b) 统计列包含:(a,b)、(a)、(b)、() cube(a,b,c) 统计列包含:(a,b,c)、(a,b)、(a,c)、(b,c)、(a)、(b)、(c)、()4、GROUPING 的使用
GROUPING函数可以接受一列,返回0或者1。如果列值为空,那么GROUPING()返回1;如果列值非空,那么返回0。GROUPING只能在使用ROLLUP或CUBE的查询中使用。当需要在返回空值的地方显示某个值时,GROUPING()就非常有用。
SELECT GROUPING(E.DEPTNO), E.DEPTNO,E.JOB,SUM(E.SAL) FROM EMP E GROUP BY ROLLUP(E.DEPTNO,E.JOB) ORDER BY E.DEPTNO;可以使用decode或者case函数进行转换这种不友好的显示:
SELECT CASE WHEN grouping(E.DEPTNO) = 1 THEN 总计 ELSE E.DEPTNO || END AS 部门, CASE WHEN grouping(E.JOB) = 1 AND grouping(E.DEPTNO) = 0 THEN 小计 ELSE E.JOB END AS 工作种类, SUM(E.SAL) FROM EMP E GROUP BY ROLLUP(E.DEPTNO,E.JOB) ORDER BY E.DEPTNO;
5、grouping sets提供了指定汇总集合条件的功能
根据E.DEPTNO,E.JOB分别汇总数据。
SELECT E.DEPTNO,E.JOB,SUM(E.SAL) FROM EMP E GROUP BY GROUPING SETS(E.DEPTNO,E.JOB);很赞哦!(7748)
相关文章
- 域名资源有限,好域名更是有限,但机会随时都有,这取决于我们能否抓住机会。一般观点认为,国内域名注册太深,建议优先考虑外国注册人。外国注册人相对诚实,但价格差别很大,从几美元到几十美元不等。域名投资者应抓住机遇,尽早注册国外域名。
- 网站域名到期会怎样?新手如何做好域名到期准备?
- 域名解析错误有哪些方面?新手要知道哪四点?
- 新手要如何才能更改域名联系人?有什么方法?
- 为啥修改dns服务器?dns服务器与域名有何联系?
- 对于企业一般都注册什么域名呢?有什么特殊的技巧呢?
- 对二级域名有何看法?有什么二级域名优化技巧?
- 如何掌控域名投资动态?有什么投资域名技巧?
- 以上的就是为大家介绍的关于域名的详解
- 要到哪去注册域名?新手有什么可以选择的注册商?