开窗函数和聚合函数的区别:
- sql标准允许将所有聚合函数用作开窗函数,用over关键字区分开窗函数和聚合函数
- 聚合函数每组只返回一个值,开窗函数每组可以返回多个值
- 举例:rum_number()-----作为开窗函数 over (parition by ()----作为聚合函数)
开窗函数的种类:
- row_number() over():对相等的值不进行区分,相等的值对应的排名相同,序号从1到n连续
- rank() over():相等的值排名相同,但若有相等的值,则序号从1到n不连续,若有两个人都排在第三名,则没有第4名
- dense_rank() over():对相等的值排名相同,但序号从1到n连续,如果又两个人都排在第一名,则排在第2名(假设仅有1个第二名)的人是第3个人
- ntile(n)