mysql滑动窗口案例

在这里插入图片描述

获取学科最高分

SELECT  DISTINCT name,subject,MAX(score) OVER (PARTITION by subject) as '此学科最高分数' from scores;

在这里插入图片描述

获取学科的报名人数

select DISTINCT subject,count(name) over (partition by subject) as '报名此学科的人数' from scores; 

在这里插入图片描述

求学科总分

SELECT DISTINCT subject,SUM(score) over (partition by subject) as '此学科总分' from scores;

在这里插入图片描述

求每次累加分数

select score,sum(score) over (order by score) as '累加分数' from scores; 

在这里插入图片描述

当前分数+前一个分数+后一个分数

select score,sum(score) over (ORDER BY score rows between 1 preceding and 1 following) as '累加分数' from scores;

在这里插入图片描述

ROW_NUMBER() 对成绩进行排序(如果两个分数一样,那仍然是一个第一,一个第二)

select name,subject,score,ROW_NUMBER() over (order by score DESC) as '排名' from scores;

在这里插入图片描述

rank() 排序,并列时下面的排名间隔一个开始排即1,1,3

select name,subject,score,RANK() over(order by score desc) as '排名' from scores;

在这里插入图片描述

DENSE_RANK() 并列时不出现跳过排名的情况即1,1,2

select name,subject,score,DENSE_RANK() over(ORDER BY score desc) as '排名' from scores;

在这里插入图片描述

NTILE(N) 将结果集划分为指定数量的组,并为每个组分配一个编号,例如将下列数分成四组

select name,subject,score,NTILE(4) over(order by score desc) as '组' from scores;

在这里插入图片描述

LAG(expr[,N[,default]]) 处理时间序列数据或相邻行的值,它允许检索前一行的值,并将其与当前行的值进行比较或计算差异三个参数的意义:column 列名、offset 向前的偏移量、 default_value如果向前偏移的行不存在,就取这个默认值 例比较相邻两个排名的分数差。

select name,subject,score,abs(score-LAG(score,1,score) over(order by score desc)) as '分值差' from scores; 

在这里插入图片描述

LEAD(expr[,N[,default]]) 与LAG() 相反相后偏移。

select name,subject,score,abs(score-LEAD(score,1,score) over(order by score desc)) as '分值差' from scores;

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力奋斗的JAVA小余

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值