一、SQL经典例题
1.开窗函数的应用
题目:根据下图变化使用开窗函数写出SQL,表名u_f1
代码:
-- 建表语句
create table u_f1(
用户名 varchar2(10),
月份 varchar2(10),
FWCS number
);
insert into u_f1 values('A','2015-01',5);
insert into u_f1 values('A','2015-01',15);
insert into u_f1 values('B','2015-01',5);
insert into u_f1 values('A','2015-01',8);
insert into u_f1 values('B','2015-01',25);
insert into u_f1 values('A','2015-01',5);
insert into u_f1 values('A','2015-02',4);
insert into u_f1 values('A','2015-02',6);
insert into u_f1 values('B','2015-02',10);
insert into u_f1 values('B','2015-02',5);
insert into u_f1 values('A','2015-03',16);
insert into u_f1 values('A','2015-03',22);
insert into u_f1 values('B','2015-03',23);
insert into u_f1 values('B','2015-03',10);
insert into u_f1 values('B','2015-03',11);
select * from u_f1;
--操作语句
with all_u_f as(
select 用户名,
月份,
sum(FWCS) all_sum
from u_f1
group by 用户名,月份
order by 用户名,月份)
select a.*,
max(all_sum)over(partition by a.用户名 order by a.月份),
sum(all_sum)over(partition by a.用户名 order by a.月份)
from all_u_f a;