热烈祝贺台州朗动科技的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » MySQL/MSSQL编程 » 探讨SQL Server 2005窗口函数

探讨SQL Server 2005窗口函数

论坛链接
  • 探讨SQL Server 2005窗口函数
  • 发布时间:2007-10-10 19:14:49    浏览数:6284    发布者:tzlink    设置字体【   
SQL Server 2005中的窗口函数(window function)与微软Windows无关;相反,它们建立数据窗口。窗口函数帮助你迅速查看不同级别的聚合,通过它可以非常方便地恢复累计总数、移动平均值、以及执行其它计算。

一个SQL Server窗口是对函数应用的行的分区。你使用OVER(…)子句指定一个窗口,你可以对任何一个聚合函数应用这个子句。通常来说,你把数据分成几个组,但OVER()的自变量可选。

列表A说明如何一次搜集几个聚集,甚至根据聚合进行其它计算。这样就可得到列表B中的结果集。我把结果集限定为一个单独的OrderID,那么查询将只产生一个窗口。你可以用各种方式修改子句,如使用一个IN()子句列出一组特殊的顺序,或使用一个BETWEEN子句推导一个顺序范围内的统计值。最后你指定的每个OrderID都得到一个窗口。

窗口函数功能非常强大,建立起来也十分容易。你可以使用这个技巧立即搜索到大量统计值。这个教程中的例子指出,你可以在单独一个查询中搜索任何统计值集合。

列表A


USE AdventureWorks2;
GO
SELECT SalesOrderID, ProductID, OrderQty AS 'Item Qty' ,
SUM(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Total Qty' ,
AVG(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Average Qty' ,
COUNT(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Total Count' ,
MIN(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Minimum Count' ,
MAX(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Maximum Count' ,
LineTotal ,
AVG(LineTotal) OVER(PARTITION BY SalesOrderID) AS 'Average Amount' ,
SUM(LineTotal) OVER(PARTITION BY SalesOrderID) AS 'Total Amount' ,
(LineTotal/SUM(LineTotal) OVER(PARTITION BY SalesOrderID)) * 100 AS 'Percent'FROM Sales.SalesOrderDetail WHERE SalesOrderID = 43664O
RDER BY ProductID
GO

列表B

43664 714 1 14 1 8 1 4 28.840400 3054.07610024432.608800 0.118000
43664 716 1 14 1 8 1 4 28.840400 3054.07610024432.608800 0.118000
43664 771 3 14 1 8 1 4 6119.9820003054.07610024432.608800 25.048400
43664 772 1 14 1 8 1 4 2039.9940003054.07610024432.608800 8.349400
43664 773 1 14 1 8 1 4 2039.9940003054.07610024432.608800 8.349400
43664 775 4 14 1 8 1 4 8099.9760003054.07610024432.608800 33.152300
43664 777 2 14 1 8 1 4 4049.9880003054.07610024432.608800 16.576100
43664 778 1 14 1 8 1 4 2024.9940003054.07610024432.608800 8.288000
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理