目录
一:开窗函数
开窗函数的由来:
在开窗函数出现之前存在着非常多用 SQL 语句非常难解决的问题,非常多都要通过复杂的相关子查询或者存储过程来完毕。为了解决这些问题,在2003年ISO SQL标准增加了开窗函数,开窗函数的使用使得这些经典的难题能够被轻松的解决。眼下在 MSSQLServer、Oracle、DB2 等主流数据库中都提供了对开窗函数的支持
作用:
开窗函数(OVER子句)用于为行定义一个窗口(这里的窗口是指运算将要操作的行的集合),它对一组值进行操作,不需要使用GROUP BY子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列
窗口函数与普通聚合函数的区别:
与 聚 合函数一样,开窗函数也是对行集组进行聚合计算,可是它不像普通聚合函数那样
每组仅仅返回一个值,开窗函数能够为每组返回多个值,由于开窗函数所运行聚合计算的行集组是窗体
聚合:
SELECT FCITY , FAGE ,
(
SELECT COUNT(* ) FROM T_Person
WHERE FSALARY<5000
)
FROM T_Person
开窗
SELECT FCITY , FAGE , COUNT(*) OVER() FROM T_Person
优势:简化书写与代码读取