文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>SQL Server 2005开窗函数的使用

SQL Server 2005开窗函数的使用

时间:2010-11-13  来源:小聪崽的一切

窗口是用户指定的一组行。开窗函数计算从窗口派生的结果集中各行的值。窗口函数必须结合排名开窗函数或者聚合开窗函数一起使用,即OVER子句前面必须是排名函数或者是聚合函数。

开窗聚合函数

在数据库表orderTable中有三个字段:pid(PK),orderId(int),orderQty(decimal(18,2))三个字段,现在期望得到如图所示的结果: 


那么我们可以直接使用如下的sql语句

 

 selectorderId,orderQty,

     sum(orderQty) over() as 汇总,

     convert(decimal(18,4),orderQty/sum(orderQty)over()) as 每单比例,

     sum(orderQty) over(PARTITION BY OrderId) as分组汇总,

     convert(decimal(18,4),orderQty/sum(orderQty)over(PARTITION By orderId)) as 每单在各组所占比例

fromorderTable

orderby orderId

 

    使用开窗函数,操作既简单又直观,上述结果如果放在SQLServer2000中将比较麻烦,要拆成好几步来完成。虽然道理明白了一大部分,但是还需要实际应用,要不理解就不是那么深刻。

开窗排名函数

   期望得到如图所示的结果:

   

    sql语句如下:

 

 selectorderId,orderQty,

   rank() over(PARTITION BY orderId order by orderQty) as分组排名,

   rank() over(order by orderQty) as 排名

fromorderTable

orderby orderId asc
 
相关阅读 更多 +
排行榜 更多 +
别惹神枪手安卓版

别惹神枪手安卓版

冒险解谜 下载
坦克战争世界

坦克战争世界

模拟经营 下载
丛林反击战

丛林反击战

飞行射击 下载