查看: 42490|回复: 20

Oracle 语法之 OVER (PARTITION BY ..)

[复制链接]
论坛徽章:
9
授权会员
日期:2006-02-10 14:50:312008新春纪念徽章
日期:2008-02-13 12:43:032009日食纪念
日期:2009-07-22 09:30:002010新春纪念徽章
日期:2010-03-01 11:08:24ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:332014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11秀才
日期:2017-02-22 15:18:00
跳转到指定楼层
1#
发表于 2005-2-22 17:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
select * from test

数据:
A   B   C
1   1   1
1   2  2
1   3   3
2   2  5
3   4  6


---将B栏位值相同的对应的C 栏位值加总
select a,b,c, SUM(C)  OVER (PARTITION BY B) C_Sum
from test

A   B   C   C_SUM  
1 1 1 1
1 2 2 7
2 2 5 7
1 3 3 3
3 4 6 6



---如果不需要已某个栏位的值分割,那就要用 null

  eg:  就是将C的栏位值summary 放在每行后面

select a,b,c, SUM(C)  OVER (PARTITION BY null) C_Sum
from test

A   B   C   C_SUM  
1 1 1 17
1 2 2 17
1 3 3 17
2 2 5 17
3 4 6 17
论坛徽章:
0
2#
发表于 2005-3-2 08:43 | 只看该作者
你是意思 我明白,可是什么时候会用到这个呢?

使用道具 举报

回复
论坛徽章:
30
ITPUB元老
日期:2005-10-06 13:25:212011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-02-13 15:11:522012新春纪念徽章
日期:2012-02-13 15:11:522012新春纪念徽章
日期:2012-02-13 15:11:522012新春纪念徽章
日期:2012-02-13 15:11:522012新春纪念徽章
日期:2012-02-13 15:11:52马上有车
日期:2014-02-19 11:55:14
3#
发表于 2005-3-2 09:35 | 只看该作者
oracle有一类函数,叫做统计函数,
就是提供来分组查询计算统计使用的。
pub里讨论这个的帖子不少,有兴趣的可以search一下。

使用道具 举报

回复
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:19:50
4#
发表于 2005-6-3 09:35 | 只看该作者

Oracle 语法之 OVER (PARTITION BY ..)

请问 OVER (PARTITION BY ..)在sql server中有没有类似的用法?
谢谢!

使用道具 举报

回复
论坛徽章:
30
ITPUB元老
日期:2005-10-06 13:25:212011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-02-13 15:11:522012新春纪念徽章
日期:2012-02-13 15:11:522012新春纪念徽章
日期:2012-02-13 15:11:522012新春纪念徽章
日期:2012-02-13 15:11:522012新春纪念徽章
日期:2012-02-13 15:11:52马上有车
日期:2014-02-19 11:55:14
5#
发表于 2005-6-4 21:42 | 只看该作者

Re: Oracle 语法之 OVER (PARTITION BY ..)

最初由 dianchou 发布
[B]请问 OVER (PARTITION BY ..)在sql server中有没有类似的用法?
谢谢! [/B]


sqlserver中没有。
我最近正打算把这写统计函数的整理成文档,提交给sql server的designer team作为下个版本的新feature呢,不过不知道team最后的决定。

使用道具 举报

回复
论坛徽章:
0
6#
发表于 2005-9-15 10:49 | 只看该作者
请问哪里有ORACLE数据比较齐全的资料?知道都请告知,再下十分感谢!!!1

使用道具 举报

回复
论坛徽章:
0
7#
发表于 2005-9-15 14:32 | 只看该作者

可以用在求个人工资占部门工资的百分比

SQL> select * from salary;

NAME       DEPT   SAL
---------- ---- -----
a          10    2000
b          10    3000
c          10    5000
d          20    4000

SQL> select name,dept,sal,sal*100/sum(sal) over(partition by dept) percent from salary;

NAME       DEPT   SAL    PERCENT
---------- ---- ----- ----------
a          10    2000         20
b          10    3000         30
c          10    5000         50
d          20    4000        100

使用道具 举报

回复
论坛徽章:
0
8#
发表于 2006-4-28 15:10 | 只看该作者
好贴,做report时用上了

使用道具 举报

回复
招聘 : 数据分析/ETL
论坛徽章:
111
itpub13周年纪念徽章
日期:2014-10-08 22:38:42蜘蛛蛋
日期:2012-11-20 15:54:17ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07迷宫蛋
日期:2012-05-14 21:33:272012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:36紫蛋头
日期:2013-01-29 09:45:50
9#
发表于 2006-5-16 12:09 | 只看该作者
Faint!
看了半天才知道栏位是列,怎么用这种叫法啊
改成列行不行啊

使用道具 举报

回复
论坛徽章:
5
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章2007版:鸡
日期:2008-01-02 17:35:53生肖徽章2007版:猴
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:53
10#
发表于 2006-6-1 17:57 | 只看该作者
HAO REN A,HAO TIE A

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表