大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
窗口函数
MySQL8.0之后支持窗口函数。窗口指的是记录集合,窗口函数是指在某种条件的记录集合上执行的特殊函数。静态窗口是指不同的记录对应的窗口大小是固定的,而滑动窗口是指随着记录的不同窗口的大小是动态变化的。
窗口函数分类
1) 专用窗口函数,包括后面要讲到的rank, dense_rank, row_number等专用窗口函数。
2) 聚合函数,如sum. avg, count, max, min等
注意事项
窗口函数原则上只能写在select子句中,因为窗口函数是对where或者group by子句处理后的结果进行操作
窗口函数的基本语法
<窗口函数> over (partition by <用于分组的列名> order by <用于排序的列名>)
partition by:用来指定开窗的列。partition by进行分组并不会改变行数,相比之下group by分组会改变行数。
order by:用于指定数据在一个窗口内如何排序
frame:当前分区的子集,子句用来定义子集的规则,通常用来作为滑动窗口使用。
排序
RANK:跳跃排序
DENSE_RANK:连续排序
row_number:没有重复值的排序[记录相等也是不重复的]可以进行分页使用。
RANK:跳跃排序
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:连续排序
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:没有重复值的排序
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 |
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185957.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...