作用
先看一下窗口函数的结构
<窗口函数> over (partition by <字段1> order by <字段2>)
partition,分组;order,排序
所以窗口函数的主要作用就是用来分组和排序
用法
<窗口函数>的位置,既可以放窗口函数,也可以用聚合函数
窗口函数:rank(),row_number,dense_rank()等
聚合函数:sum(),count(),min(),max(),avg()等
区别
rank()
SELECT *,RANK() over(PARTITION by class ORDER BY score) 排名
FROM school
结果:
dense_rank()
SELECT *,DENSE_RANK() over(PARTITION by class ORDER BY score) 排名
FROM school
结果:
row_number()
SELECT *,ROW_NUMBER() over(PARTITION by class ORDER BY score) 排名
FROM school
结果:
总结:区别在于排名的数字不同