group by有几个扩展
来源:互联网 发布:协同过滤算法应用 编辑:程序博客网 时间:2024/04/20 16:11
发现db2的group by有几个扩展,方便cube的计算- -
A:grouping sets:用来在单个sql中形成多级分组。
例:select company_id,node_id,count(customer_id) from customer group by grouping sets(company_id,node_id)
B:rollup:可以在单个数据库操作中形成多个分组。
例:select company_id,node_id,count(customer_id) from customer group by rollup(company_id,node_id)
注:rollup操作不是可交换的操作,指定用户组的顺序是很重要的。
C:cube: 生成分组表中分组的所有组合。
例:select company_id,node_id,count(customer_id) from customer group by cube(company_id,node_id)
D:over:移动函数可以帮助实现移动的数据分析
Select date,avg(qty) over(order by date rows between 1 preceding and 1 following) as values from sale
A:grouping sets:用来在单个sql中形成多级分组。
例:select company_id,node_id,count(customer_id) from customer group by grouping sets(company_id,node_id)
B:rollup:可以在单个数据库操作中形成多个分组。
例:select company_id,node_id,count(customer_id) from customer group by rollup(company_id,node_id)
注:rollup操作不是可交换的操作,指定用户组的顺序是很重要的。
会针对前面这个变量来作各种情况的group by ,后一个变量则只是其中一种情况
C:cube: 生成分组表中分组的所有组合。
例:select company_id,node_id,count(customer_id) from customer group by cube(company_id,node_id)
--这个再计算cube的时候很方便,直接能给出所有组合情况的group by
并且结合coalesce()就能达到想要的cube中间数据,^_^
这个要常用,节省重复工作
D:over:移动函数可以帮助实现移动的数据分析
Select date,avg(qty) over(order by date rows between 1 preceding and 1 following) as values from sale
我们平时用的最多的就是 select sum(数量) from 表名 group by 部门,姓名 with ur;
其实db2关于group by 还有几个其他用法,x现将学习笔记贴出来:
group by 特殊说明:
select DEPARTMENT,Name,sum(amount) as sum,count(*) as count
from sale
inner join Employee on liaohaibing.EMPLOYEE.ID = liaohaibing.SALE.EMPLOYEEID
inner join liaohaibing.DEPARTMENT on
liaohaibing.DEPARTMENT.DEPARTMENTID = liaohaibing.EMPLOYEE.DEPARTMENTID
where liaohaibing.DEPARTMENT.DEPARTMENTID in(2,4,5,9)
group by rollup(DEPARTMENT,Name);
显示出来得结果如下表所示.
DEPARTMENT NAME SUM COUNT
184780 128
后勤部门 58554 48
开发部门 48625 32
资产管理部门 77601 48
后勤部门 fff 15033 16
后勤部门 ggg 18000 16
后勤部门 qqq 25521 16
开发部门 lhb 26293 16
开发部门 liaohaibing 22332 16
资产管理部门 ccc 28936 16
资产管理部门 ddd 28033 16
资产管理部门 eee 20632 16
Rollup
GROUP BY ROLLUP(DEPARTMENT,NAME)
第一是按把所有和显示到第一行。
第二是按GROUP BY DEPARTMENT 这种情况显示出来,这里是按部门进行分组。
第三是按GROUP BY DEPARTMENT,NAME情况显示出来,这里是按某部门中得名字进行分组得
还有个 参数:CUBE ,
例子: SELECT SALES_DATE, SALES_PERSON,
SUM(SALES) AS UNITS_SOLD
-- ,GROUPING(SALES_DATE) AS DATE_GROUP,
-- GROUPING(SALES_PERSON) AS SALES_GROUP
FROM SALES
GROUP BY cube (SALES_DATE, SALES_PERSON)
-- ORDER BY SALES_DATE, SALES_PERSON ;
Cube:
GROUP BY cube (SALES_DATE, SALES_PERSON)
第一是按把所有和显示到第一行。
第二是按 group by SALES_DATE 这种情况分组
第三是按group by sales_person这种情况分组
第四是按group by sales_date,sales_person分组.
另外一个参数为 group by sets
SELECT SALES_DATE, SALES_PERSON,
SUM(SALES) AS UNITS_SOLD
-- ,GROUPING(SALES_DATE) AS DATE_GROUP,
-- GROUPING(SALES_PERSON) AS SALES_GROUP
FROM SALES
GROUP BY GROUPING SETS (SALES_DATE, SALES_PERSON,())
-- ORDER BY SALES_DATE, SALES_PERSON ;
GROUPING SETS
GROUP BY GROUPING SETS (SALES_DATE, SALES_PERSON,())
第一是按把所有和显示到第一行
第二时候按 group by sales_date进行分组
第三是按group by sales_person进行分组.
- group by有几个扩展
- GROUP BY的扩展
- GROUP BY 子句及其扩展
- GROUP BY 子句及其扩展
- GROUP BY 子句及其扩展
- Group By的扩展使用
- GROUP BY子句及其扩展再续
- oracle中group by的扩展
- group by 扩展函数之rollup
- group by扩展函数之cube
- group by 扩展函数之GROUPING SETS
- group by扩展函数之grouping
- group by扩展函数之grouping_id
- group by扩展函数之group_id
- 报表开发之扩展GROUP BY
- group by与distinct有何区别
- group by与distinct有何区别
- 用partition by相对group by有什么优势吗?
- Oracle管理
- 下一代协作平台------Jazz
- poi写Excel文档
- WINCE系统功能定制 - 20382960
- 狂吃不胖11种食物化解油腻
- group by有几个扩展
- Hibernate之 对象/关系数据库映射基础(Basic O/R Mapping)
- find到带空格文件名用xargs处理的技巧
- 像咨询师一样思考---走出软件作坊:三五个人十来条枪 如何成为开发正规军(三十一) - 阿朱=行业趋势+开发管理+架构 - 博客园
- [2008-NBA-视频直播]NBA常规赛
- java 基础常识
- title提示框,js提示框tips
- JAVA 求俩个数字之间的质数
- 编程八荣八耻