mysql 窗口函数

2023-09-04

来源:bilibili视频 和

CSDN   https://blog.csdn.net/weixin_42521211/article/details/121702369

CSDN     https://blog.csdn.net/mjh1667002013/article/details/128140257

一.什么是窗口函数

基本含义:

窗口限定一个范围,它可以理解为满足某些条件的记录集合,窗口函数也就是在窗口范围内执行的函数。

基本语法:

窗口函数有over关键字,指定函数执行的范围,可分为三部分:分组子句(partition by)    排序子句(order by)   窗口子句(rows)

create table SQL_S(
cid varchar(4),
sname varchar(4),
score INT)
insert into SQL_S values('001','张三',78),('001','李四',82),('002','小明',90),('001','王五',67)
,('002','小红',85),('002','小刚',62);
select *,SUM(score) over(partition by cid) as '班级总分' from SQL_S;

对比GROUP by:

select cid,SUM(score) as '班级总分' from SQL_S  group  by  cid;

 select *,SUM(score) over(partition by cid order by score) as '班级总分' from SQL_S;

二、函数类型

排序类函数

rank()函数:生成数据项在分组中的排名,排名相等会在名次中留下空位。比如出现1,2,2,4,4,6,7

ROW_NUMBER()函数:从1开始,按照顺序。比如出现1,2,3,4,5,6,7

DENSE_RANK()函数:生成数据项在分组中的排名,排名出现为1,2,2,3,3,4

聚合类函数

sum() avg()  max()  min()

 

select *,
sum(score) over (order by student_num ) as current_sum,
avg(score) over (order by student_num ) as current_avg,
count(score) over (order by student_num ) as current_count,
max(score) over (order by student_num ) as current_max,
min(score) over (order by student_num ) as current_min
from class;

 

 

 

 

 

 

 

 

 

 

 

 

posted @   无名之辈的ggb  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示