开窗函数格式:函数名(列) over (选项)
SQL标准允许将所有聚合函数用作开窗函数,使用over关键字来区分这两种用法。
PARTITION BY 子句
与group by子句不同,partition by子句创建的分区是独立于结果集的,partition by创建的分区只是供进行聚合运算的。
--显示每一个人员的信息以及所属城市的人员数
select fname,fcity,fage,fsalary,
count(*) over(partition by fcity) 所在城市人数 from t_person
在同一个SELECT语句中可以同时使用多个开窗函数,而且这些开窗函数并不会相互干扰。比如下面的SQL语句用于显示每一个人员的信息、所属城市的人员数以及同龄人的人数:
--显示每一个人员的信息、所属城市的人员数以及同龄人的人数:
select fname,
fcity,
fage,
fsalary,
count(*) over(partition by fcit