与over函数结合的几个函数介绍

下面以班级成绩表t2来说明其应用

t2表信息如下:
cfe                              74
dss                              95
ffd                              95
fda                              80
gds                              92
gf                                99
ddd                              99
adf                              45
asdf                            55
3dd                              78

select * from                                                                                                                                           
                                                                                                                                                           
        select name,class,s,rank()over(partition by class order by s desc) mm from t2
                                                                                                                                                           
        where mm=1;
得到的结果是:
dss                              95                1
ffd                              95                1
gds                              92                1
gf                                99                1
ddd                              99               

注意:
        1.在求第一名成绩的时候,不能用row_number(),因为如果同班有两个并列第一,row_number()只返回一个结果;
select * from                                                                                                                                           
                                                                                                                                                           
        select name,class,s,row_number()over(partition by class order by s desc) mm from t2
                                                                                                                                                           
        where mm=1;
              95                  --95有两名但是只显示一个
              92                1

       99        1 --99有两名但也只显示一个


select name,class,s, sum(s)over(partition by class order by s desc) mm from t2 --按班级对成绩进行排序并累加求和
dss               95        190  --由于两个95都是第一名,所以累加时是两个第一名的相加
ffd               95        190 
fda               80        270  --第一名加上第二名的
gds               92        92
cfe               74        166
gf                99        198
ddd               99        198
3dd               78        276
asdf              55        331
adf               45        376

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值