oracle over 函数 开窗函数

新建一张学生表

CREATE TABLE T_STU(
ID NUMBER(38) PRIMARY KEY,
NAME VARCHAR2(20),
GENDER NUMBER(1),
GRADE NUMBER(4)
);

插入数据

insert into t_stu values(1,'朱',1,100);
insert into t_stu values(2,'张',0,98);
insert into t_stu values(3,'高',1,95);
insert into t_stu values(4,'林',1,95);
insert into t_stu values(5,'刘',1,94);
insert into t_stu values(6,'胡',0,97);
insert into t_stu values(7,'陈',0,97);
insert into t_stu values(8,'易',0,92);

求和的时候使用over

select t.* , sum(t.grade) over(partition by gender ) d from t_stu t

sum(GRADE ) over (partition by id order by gender) 性别连续求和,--各性别的成绩"连续"求和
sum(GRADE ) over (partition by GENDER ) 性别总和, -- 别统计的总和,同一性别总和不变
sum(GRADE ) over (order by id) 连续求和, --所有别的乘积"连续"求和
sum(GRADE ) over () 所有员工的薪水总和

求不同性别的排名:


SELECT s.*,
DENSE_RANK() OVER(PARTITION BY s.gender ORDER BY s.grade DESC) dro
FROM t_stu s


其中 DENSE_RANK()与rank()相反,只做名次的累加,不做跳跃。
rank()则是跳跃求和,比如有并列,则下一名次+2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值