• T-SQL:开窗函数(十二)


    1.基本概念

    开窗函数分为两个部分分别是

    1.聚合,排名,偏移,分布函数 。

    2.开窗分区,排序,框架。

    下面举个例子

    SELECT empid, ordermonth, val,
      SUM(val) OVER(PARTITION BY empid
                    ORDER BY ordermonth
                    ROWS BETWEEN UNBOUNDED PRECEDING
                             AND CURRENT ROW) AS runval
    FROM Sales.EmpOrders;

    sum(val)  就是集合函数

    over() 就是开窗     PARTITION BY empid  就是开窗分区(分组)   ORDER BY ordermonth 开窗排序  

     ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW  开窗架构

    2.排名开窗函数

     SQL SERVER 支持4个排名函数 ROW_NUMBER,RANK,DENSE_RANK ,NTLE   来看看它们分别的作用

    SELECT orderid, custid, val,
    ROW_NUMBER() OVER(ORDER BY val) AS rownum,
    RANK() OVER(ORDER BY val) AS rank,
    DENSE_RANK() OVER(ORDER BY val) AS dense_rank,
    NTILE(10) OVER(ORDER BY val) AS ntile
    FROM Sales.OrderValues
    ORDER BY val;

    可以看到 它们不同排序规则

    ROW_NUMBER() 对排序字段行号进行排序  

    RANK() 对数值进行排序 对相同数值有行号占用

    DENSE_RANK() 也是对数值排序 如果有相同数值 依旧会按照原先行号加

    NTILE 分区排序 为每一行分配一个区号 如果分10区 会对所有数据进行分区  总数据/分区数  就是每多少数据为一区

    ROW_NUMBER()  默认在 DISTINCT 筛选重复项之前计算

    2.偏移开窗函数 

    sql server 中总共有4个偏移函数 LAG 和 LEAD, FIRST_VALUE 和 LAST_VALUE   

    LAG函数在当前行之前查找

    LEAD函数在当前行之后查找

    LAST_VALUE    返回查找结果的最后一行

    FIRST_VALUE  返回查找结果的第一行

     3.聚合开窗函数

    SUM() OVER()

    AVG() OVER()

    COUNT() OVER()

    MAX() OVER() 等等

  • 相关阅读:
    JavaScript根据CSS的Media Queries来判断浏览设备的方法
    JavaScript API 设计原则
    高性能 CSS3 动画
    CSS代码实例:用CSS代码写出的各种形状图形
    frontpage 2010.2003绿色版
    Web前端年后跳槽必看的各种面试题
    [ksm][数学] Jzoj P5810 简单的玄学
    [分治] Jzoj P5807 简单的区间
    [dfs][bfs] Jzoj P5806 简单的操作
    [dp] Jzoj P5804 简单的序列
  • 原文地址:https://www.cnblogs.com/feizianquan/p/9445948.html
Copyright © 2020-2023  润新知