窗口函数
一、定义
窗口函数,也叫OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据库数据进行实时分析处理。
窗口函数的基本语法如下:
<窗口函数> over (partition by <用于分组的列名>
order by <用于排序的列名>)
<窗口函数>可以为以下两种:
1、专用窗口函数:rank,dense_rank, row_number等;
2、聚合函数:SUM、AVG、COUNT、MAX、MIN等;
二、用法
窗口函数是对where 或 group by 的处理结果进行操作,所以要放在select子句中。
可应用于分组、排序;不同于GROUP BY 会改变原表行数(按group合并),窗口函数不减少原表行数;
1、专用窗口函数
rank()有并列名次占用下一名次位置
dense_rank()有并列名次不占用下一名次位置
row_number()不考虑并列名次
2、聚合函数
用法例如:
select *,
sum(aaa) over (order by bbb) as ccc
from xxx
where xxx.ccc <= 2 //取排名前2