最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Oracle over()函数使用说明
时间:2022-06-29 10:02:02 编辑:袖梨 来源:一聚教程网
例1
| 代码如下 | 复制代码 |
|
–select * from tmn_zhbg order by id desc select id, mc,fs,class,sum (fs) over (order by fs,id) 连续累加,sum (fs) over (order by fs) 连续累加XX,sum (fs) over (partition by id ) 分组求和, |
|
补充一个实例
表t_pi_part
字段 id code name
value 1 222 a
value 2 222 b
value 3 333 c
给code相同的part code 添加行标,根据id 排序
| 代码如下 | 复制代码 |
| select p.* ,row_number()over(partition by p.code order order by a.id desc) as row_index from t_pi_part p; |
|
一:分析函数over
Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是
对于每个组返回多行,而聚合函数对于每个组只返回一行。
下面通过几个例子来说明其应用。
1:统计某商店的营业额。
date sale
1 20
2 15
3 14
4 18
5 30
规则:按天统计:每天都统计前面几天的总额
得到的结果:
DATE SALE SUM
----- -------- ------
1 20 20 --1天
2 15 35 --1天+2天
3 14 49 --1天+2天+3天
4 18 67 .
5 30 97 .
2:统计各班成绩第一名的同学信息
NAME CLASS S
----- ----- ----------------------
fda 1 80
ffd 1 78
dss 1 95
cfe 2 74
gds 2 92
gf 3 99
ddd 3 99
adf 3 45
asdf 3 55
3dd 3 78
通过:
--
| 代码如下 | 复制代码 |
| select * from ( select name,class,s,rank()over(partition by class order by s desc) mm from t2 ) where mm=1 |
|
--
得到结果:
NAME CLASS S MM
----- ----- ---------------------- ----------------------
dss 1 95 1
gds 2 92 1
gf 3 99 1
ddd 3 99 1
注意:
1.在求第一名成绩的时候,不能用row_number(),因为如果同班有两个并列第一,row_number()只返回一个结果
2.rank()和dense_rank()的区别是:
--rank()是跳跃排序,有两个第二名时接下来就是第四名
--dense_rank()l是连续排序,有两个第二名时仍然跟着第三名
相关文章
- yy漫画app最新下载入口-歪歪漫画首页免广告直接进 08-10
- 软银机器人已开始量产 08-10
- “太空算力没有意义”,孙正义给马斯克泼冷水 08-10
- 诡异广告调查事件网页解谜游戏全部线索内容 08-10
- 数学家张寿武:AI的问题不是用不用的问题,而是如何用、如何监管 08-10
- 20 亿美元原价回购 Meta 持股,腾讯牵头中方资本夺回通用 AI 标杆 Manus 08-10