首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >mysql窗口函数rank_rank函数降序排名

mysql窗口函数rank_rank函数降序排名

作者头像
全栈程序员站长
发布2022-11-09 10:12:48
发布2022-11-09 10:12:48
1.6K0
举报

大家好,又见面了,我是你们的朋友全栈君。

窗口函数

MySQL8.0之后支持窗口函数。窗口指的是记录集合,窗口函数是指在某种条件的记录集合上执行的特殊函数。静态窗口是指不同的记录对应的窗口大小是固定的,而滑动窗口是指随着记录的不同窗口的大小是动态变化的。

窗口函数分类

1) 专用窗口函数,包括后面要讲到的rank, dense_rank, row_number等专用窗口函数。

2) 聚合函数,如sum. avg, count, max, min等

注意事项

窗口函数原则上只能写在select子句中,因为窗口函数是对where或者group by子句处理后的结果进行操作

窗口函数的基本语法

代码语言:javascript
复制
<窗口函数> over (partition by <用于分组的列名> order by <用于排序的列名>)

partition by:用来指定开窗的列。partition by进行分组并不会改变行数,相比之下group by分组会改变行数。 order by:用于指定数据在一个窗口内如何排序 frame:当前分区的子集,子句用来定义子集的规则,通常用来作为滑动窗口使用。

排序

RANK:跳跃排序 DENSE_RANK:连续排序 row_number:没有重复值的排序[记录相等也是不重复的]可以进行分页使用。

RANK:跳跃排序

代码语言:javascript
复制
select subject,score,rank() 
over (partition by subject order by score desc) as 'rank' 
from window_test_table;

subject

score

rank

数学

100

1

数学

100

1

数学

90

3

数学

90

3

数学

60

5

DENSE_RANK:连续排序

代码语言:javascript
复制
select subject,score,dense_rank() 
over (partition by subject order by score desc) as 'rank' 
from window_test_table;

subject

score

rank

数学

100

1

数学

100

1

数学

90

2

数学

90

2

数学

60

3

row_number:没有重复值的排序

代码语言:javascript
复制
select subject,score,row_number() 
over (partition by subject order by score desc) as 'rank' 
from window_test_table;

subject

score

rank

数学

100

1

数学

100

2

数学

90

3

数学

90

4

数学

60

5

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/185957.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月4日 ,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 窗口函数
  • 窗口函数分类
  • 注意事项
  • 窗口函数的基本语法
  • 排序
  • RANK:跳跃排序
  • DENSE_RANK:连续排序
  • row_number:没有重复值的排序
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档