###### oracle 利用窗口函数计算合计、上月、下月及累计值等

create table TEST_GROUP_TABLE
(
t_year   NUMBER,
t_month  NUMBER,
quantity NUMBER
);

insert into test_group_table values(2012,1,29);

insert into test_group_table values(2012,1,39);

insert into test_group_table values(2012,2,11);

insert into test_group_table values(2012,3,12);

insert into test_group_table values(2013,1,10);

insert into test_group_table values(2013,2,20);

insert into test_group_table values(2013,3,30);

insert into test_group_table values(2013,4,40);

--根据年份分组计算最小(大)数量及及最小(大)数量的月份

select t.t_year,

t.t_month,
sum(quantity) qty,
first_value(sum(quantity)) over(partition by t_year order by sum(quantity)) min_qty,
first_value(t_month) over(partition by t_year order by sum(quantity)) min_month,
first_value(sum(quantity)) over(partition by t_year order by sum(quantity) desc) max_qty,
first_value(t_month) over(partition by t_year order by sum(quantity) desc) max_month,
rank() over(partition by t_year order by sum(quantity) desc) rank_1
from test_group_table t
group by t.t_year, t.t_month;

--根据年份分组计算当月合计数量,上月合计数量,下月合计数量
select t.t_year,
t.t_month,
sum(quantity) curr_month,
lag(sum(quantity)) over(partition by t_year order by t_month) last_month,
lead(sum(quantity)) over(partition by t_year order by t_month) next_month
from test_group_table t
group by t.t_year, t.t_month;

--根据年份分组,计算前n月至当月的合计数量
select t.t_year,
t.t_month,
sum(quantity),
sum(sum(quantity)) over(partition by t_year order by t_month rows between unbounded preceding and current row) agg_qty
from test_group_table t

group by t.t_year, t.t_month;

--根据年份分组,计算上月、当月和下月的合计数量

select t.t_year,
t.t_month,
sum(quantity),
sum(sum(quantity)) over(partition by t_year order by t_month rows between 1 preceding and 1 following) agg_qty
from test_group_table t
group by t.t_year, t.t_month;

#### ORACLE逐行累计求和方法（OVER函数）

2016-10-23 00:51:32

#### SYBASE iq与ORACLE使用分析函数计算同期值及常用计算函数使用

2010年07月14日 128KB 下载

#### 用PLSQL查询Oracle数据库某字段的本年数，上年同期数，同比

2015-01-28 11:48:32

#### ORACLE 获取同期数据的两种方法

2015-02-25 15:21:47

#### Oracle按月份累计求和

2014-04-15 16:16:26

2012-06-19 11:27:36

#### hive统计分析窗口函数实战

2015-04-01 15:07:41

#### hive之窗口函数理解与实践

2015-01-13 14:58:39

#### Hive窗口函数之累积值、平均值、首尾值的计算学习

2017-11-16 10:33:32

#### Oracle按日期累计求和

2016-12-14 19:38:41

## 不良信息举报

oracle 利用窗口函数计算合计、上月、下月及累计值等