Group分组及其扩展总结(三)
2012-11-04 16:00
260 查看
--1.Grouping_id --Grouping_id借助having子句可以对记录进行过滤 --将不包含小计或者总计的记录过滤掉 --Grouping_id可以返回一列或者多列,返回Grouping位向量的十进制值 select grouping(a.division_id), grouping(a.job_id), grouping_id(a.division_id, a.job_id), sum(a.salary) from employees2 a group by cube(a.division_id, a.job_id) order by a.division_id, a.job_id 运行结果为: GROUPING(A.DIVISION_ID) GROUPING(A.JOB_ID) GROUPING_ID(A.DIVISION_ID,A.JO SUM(A.SALARY) 1 0 0 0 530000 2 0 0 0 800000 3 0 0 0 280000 4 0 1 1 1610000 5 0 0 0 245000 6 0 0 0 805000 7 0 0 0 270000 8 0 1 1 1320000 9 0 0 0 4446000 10 0 0 0 490000 11 0 1 1 4936000 12 0 0 0 465000 13 0 0 0 115000 14 0 0 0 435000 15 0 1 1 1015000 16 1 0 2 245000 17 1 0 2 6246000 18 1 0 2 800000 19 1 0 2 115000 20 1 0 2 1475000 21 1 1 3 8881000 --2.Grouping_ID用处在于使用having子句过滤记录,只要控制grouping_id记录的返回值大于零就可以 select case grouping(b.division_id) when 1 then '所有部门' else b.division_id end, case grouping(b.job_id) when 1 then '所有工种' else b.job_id end, sum(b.salary), grouping_id(b.division_id, b.job_id) from employees2 b group by cube(b.division_id, b.job_id) having grouping_id(b.division_id, b.job_id) > 0 --两列或者有一列为空 order by b.division_id, b.job_id 运行结果 CASEGROUPING(B.DIVISION_ID)WHE CASEGROUPING(B.JOB_ID)WHEN1THE SUM(B.SALARY) GROUPING_ID(B.DIVISION_ID,B.JO 1 BUS 所有工种 1610000 1 2 OPE 所有工种 1320000 1 3 SAL 所有工种 4936000 1 4 SUP 所有工种 1015000 1 5 所有部门 ENG 245000 2 6 所有部门 MGR 6246000 2 7 所有部门 PRE 800000 2 8 所有部门 TEC 115000 2 9 所有部门 WOR 1475000 2 10 所有部门 所有工种 8881000 3
相关文章推荐
- Group分组及其扩展总结(一)
- Group分组及其扩展总结(四)
- memcached服务及其相关库以及php的memcached扩展的安装总结
- Group分组及其扩展总结(二)
- 把 /data 目录及其子目录下所有以扩展名 .txt 结尾的文件中包含 magedu 的字符串全部
- Memcached 笔记与总结(2)编译 php-memcache 扩展
- 编译原理-高级语言及其语法描述作业总结
- Java RMI 简介及其优劣势总结
- CListCtrl控件功能扩展总结
- GCD及其扩展GCD详解
- 脱标流下的css定位 及其引发的思考总结
- 黑马程序员--枚举,反射学习及其总结
- CListCtrl控件功能扩展总结
- 深入理解java集合类及其运用总结及经验分享
- VS中各种文件及其扩展名
- 【com编程】IE浏览器(右键扩展功能总结版)
- 五种常用的图片格式及其是否有数据压缩的总结
- 欧几里德算法及其扩展算法
- 第七节:HtmlHelper及其扩展
- iOS 本地推送通知和接收通知及其跳转控制总结