目录
窗口函数是什么
这篇文章讲的太好了,全面且清晰,讲述窗口函数是什么:通俗易懂的学会:SQL窗口函数 - 知乎
这里再在上述文章基础上总结一下:
1. 语法
<窗口函数> over (partition by <用于分组的列名> order by <用于排序的列名>)
2. 主要作用
在每组内排名;累计求和;累计求均值;找组内最大或最小值;
3. 类别
<窗口函数>的位置,可以放两种函数:
(1)专用窗口函数:比如rank, dense_rank, row_number等
(2)聚合函数:比如sum, avg, min, max, count等
4. 窗口函数的神奇之处
(1)可以同时实现group by 和 order by的功能,且不会减少行数(group by则会将每个类别减少至一行)
(2)方便得到并列排名(若有三人并列第二名,则以下三种窗口函数会得到这样的结果:rank: 1,2,2,2,5. dense_rank: 1,2,2,2,3. row_number: 1,2,3,4,5)
具体讲解还是看上面的知乎文章吧,讲的特别清晰!
下面我们来通过下面的实际业务场景例子(摘自牛客网: https://www.nowcoder.com/practice/f301eccab83c42ab8dab80f28a1eef98),说明一下窗口函数的其中一个重要应用,即:通过累计求和,得到‘同时做某事’的人数。