开窗函数对一组值进行操作,它不像普通聚合函数那样需要使用GROUP BY子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列
开窗函数的语法形式为:函数 + over(partition by <分组用列> order by <排序用列>),表示对数据集按照分组用列进行分区,并且并且对每个分区按照函数聚合计算,最终将计算结果按照排序用列排序后返回到该行。括号中的两个关键词partition by 和order by 可以只出现一个。
注意:开窗函数不会互相干扰,因此在同一个查询语句中可以同时使用多个开窗函数
开窗函数适用于 mysql 8.0以上版本, sql sever 、hive、oracle 等
1.1、row_number

1.2、rank

1.3、dense_rank

1.4、ntile

2.1、sum
2.1.1 不带order by

2.1.2 带有order by

2.2、count
2.2.1 不带order by

2.2.2 带有 order by
2.3 min
2.3.1 不带order by
2.3.2 带有order by

2.4 max
2.4.1 不带order by

2.4.2 带有order by

2.5 avg
2.5.1 不带order by

2.5.2 带有order by

3.1 lag
3.1.1 不带order by

3.1.2 带有 order by

3.2 lead

3.3 first_value 和 last_value
3.3.1 不带order by

3.3.1 带有 order by

4.1 range

4.2 rows


参考:SQL函数 - 开窗(窗口)函数 - 知乎
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/2969.html


