开窗函数有浅入深详解(一)
前端之家收集整理的这篇文章主要介绍了
开窗函数有浅入深详解(一),
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在开窗函数出现之前存在着很多用 sql 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成。为了解决这些问题,在2003年ISO sql标准加入了开窗函数,开窗函数的使用使得这些经典的难题可以被轻松的解决。
目前在 MSsqlServer、Oracle、DB2 等主流数据库中都提供了对开窗函数的支持,不过非常遗憾的是 MysqL 暂时还未对开窗函数给予支持。
为了更加清楚地理解,我们来建表并进行相关的查询(截图为MSsqlServer中的结果)
sql;">
CREATE TABLE T_Person
(
FName VARCHAR(20),FCity VARCHAR(20),FAge INT,FSalary INT
)
Oracle:
CREATE TABLE T_Person (FName VARCHAR2(20),FCity VARCHAR2(20),FSalary INT)
sqlServer中演示:
T_Person 表保存了人员信息,FName 字段为人员姓名,FCity 字段为人员所在的城市名,
FAge 字段为人员年龄,FSalary 字段为人员工资。
然后执行下面的sql语句向 T_Person表中插入一些演示数据:
sql;">
INSERT INTO T_Person(FName,FCity,FAge,FSalary)
VALUES('Tom','BeiJing',20,3000);
INSERT INTO T_Person(FName,FSalary)
VALUES('Tim','ChengDu',21,4000);
INSERT INTO T_Person(FName,FSalary)
VALUES('Jim',22,3500);
INSERT INTO T_Person(FName,FSalary)
VALUES('Lily','London',2000);
INSERT INTO T_Person(FName,FSalary)
VALUES('John','NewYork',1000);
INSERT INTO T_Person(FName,FSalary)
VALUES('YaoMing',FSalary)
VALUES('Swing',FSalary)
VALUES('Guo',2800);
INSERT INTO T_Person(FName,FSalary)
VALUES('YuQian',24,8000);
INSERT INTO T_Person(FName,FSalary)
VALUES('Ketty',25,8500);
INSERT INTO T_Person(FName,FSalary)
VALUES('Kitty',FSalary)
VALUES('Merry',23,FSalary)
VALUES('Smith',30,FSalary)
VALUES('Bill',FSalary)
VALUES('Jerry',3300);
查看表中的内容:
select * from T_Person