目录
1 窗口函数的含义
OVER (
[ PARTITION BY <列清单> ]
ORDER BY <排序用列清单> )
- 窗口函数也称为OLAP函数,用来指定函数执行的窗口范围
- 若后面括号中什么都不写,则窗口函数基于所有行进行计算
- 若指定了分区,则窗口函数的大小是针对每个分区的数据
2 over( )窗口函数的语法结构
over的括号包括三个函数:
3 常与over函数结合使用的函数
聚合类函数:
- avg()
- sum()
- max()
- min()
排名类函数:
- rank() 按值排序时,产生自增的序号,值相等时重复,会产生空位
- dense_rank() 按值排序时,产生自增的序号,值相等时重复,不会产生空位
- row_number() 按值排序时,产生自增的序号,不会重复
4 题目案例
e.g. 数据源为衬衫表SHIRTABLE,根据不同的衬衫种类shirt_type,按销售单价shirt_price从低到高的顺序创建排序表
select shirt_name,shirt_type,shirt_price,
rank()
over( partition by shirt_type
order by shirt_price ) as ranking
from shirttable;