zoukankan      html  css  js  c++  java
  • SQL Server 2005开窗函数的使用

    开窗函数是SQL Server2005新增的功能,在SQL Server 2000中是没有这个功能的。SQL Server2005中的窗口函数能够迅速查看不同级别的聚合,通过它可以非常方便地累计总数、计算平均值、以及执行其它计算。

    窗口是用户指定的一组行。开窗函数计算从窗口派生的结果集中各行的值。窗口函数必须结合排名开窗函数或者聚合开窗函数一起使用,即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
     
  • 相关阅读:
    浅谈JS异步轮询和单线程机制
    nginx、php-fpm、swoole HTTP/TCP压测对比
    HTTP.Socket.TCP详解
    HTTP 的长连接和短连接
    docker 解决network has active endpoints
    centos7.5 ab压力测试安装和swoole压力测试
    win7下docker环境centos容器中安装mysql5.7
    centos7 lamp环境搭建
    在 Windows 上进行 Laravel Homestead 安装、配置及测试
    laravel windows安装(composer)
  • 原文地址:https://www.cnblogs.com/tianguook/p/2098411.html
Copyright © 2011-2022 走看看