SQLServer窗口函数:ROWS与RANGE

更新时间:2023-07-02 19:53:09 阅读: 评论:0

SQLServer窗⼝函数:ROWS与RANGE
⼏乎每次我展⽰SQL Server⾥的窗⼝时,⼈们都⾮常有兴趣知道,当你定义你的窗⼝(指定的⼀组⾏)时,ROWS与RANGE选项之间的区别。因此在今天的⽂章⾥我想给你展⽰下这些选项的区别,对于你的分析计算意味着什么。
国庆节作文300字作文ROWS与RANGE之间的区别
当你⽤OVER()⼦句进⾏你的分析计算来打开你的窗⼝,你也可以在窗⼝⾥看到的,通过ROWS与RANGE选项来限制你的⾏数。来看下⾯的T-SQL语句:
1SELECT
小蜜蜂吉他谱2    t.OrderYear,
3    t.OrderMonth,
4    t.TotalDue,
5SUM(t.TotalDue) OVER(ORDER BY t.OrderYear, t.OrderMonth ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS'RunningTotal'
6FROM
7 (
8SELECT
9YEAR(OrderDate) AS'OrderYear',
10MONTH(OrderDate) AS'OrderMonth',
11        SalesPersonID,
12        TotalDue
13FROM Sales.SalesOrderHeader
14 ) AS t
15WHERE
16    t.SalesPersonID =274
17AND t.OrderYear =2005
郑州大专院校排名18GO
这个T-SQL语句⽤SUM()聚合函数进⾏汇总计算。窗⼝本⾝从第1⾏(UNBOUNDED PRECEDING)上⾄当前⾏(CURRENT ROW)。对于记录级中的每1⾏,窗⼝变得越来越⼤,因此很容易进⾏汇总运算。下图演⽰了这个概念。
从输出你可以看到,结果是个⾃增长的汇总——运⾏合计汇总的结果。
现在假设你修改窗⼝为RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW,会发⽣什么:
1SELECT
团队工作
2    t.OrderYear,
3    t.OrderMonth,
4    t.TotalDue,
5SUM(t.TotalDue) OVER(ORDER BY t.OrderYear, t.OrderMonth RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS'RunningTotal'
6FROM
7 (
亲情作文题目8SELECT
9YEAR(OrderDate) AS'OrderYear',
10MONTH(OrderDate) AS'OrderMonth',
学习电脑制表格
11        SalesPersonID,
12        TotalDue
13FROM Sales.SalesOrderHeader
14 ) AS t
15WHERE
16    t.SalesPersonID =274
17AND t.OrderYear =2005
18GO
从下图你可以看到,你得到了不同的结果,对于2005年11⽉的记录显⽰同样的汇总。
我们来尝试理解下为什么这⾥RANGE选项⽐ROWS选项给你不同的结果。使⽤ROWS选项你定义当前⾏的固定前后记录。这⾥你看到的⾏取决于窗⼝的ORDER BY从句。你也可以说你在物理级别定义你的窗⼝。
当你使⽤RANGE选项事情就改变了。RANGE选项包含窗⼝⾥的所有⾏,和当前⾏有相同ORDER BY值。从刚才的图⽚你可以看到,对于2005年11⽉的2条记录你拿到同个汇总,因为这2⾏有同样的ORDER BY值(2005年11⽉)。使⽤RANGE选项你在逻辑级别定义你的窗⼝。如果更多的⾏有同个ORDER BY值,当你使⽤ROWS选项你的窗⼝会包含更多的⾏。高月和花
搞笑骂人的话⼩结
在今天的⽂章⾥你看到了当你为你的分析计算定义窗⼝时,ROWS和RANGE选项之间的区别。使⽤R
OWS选项你在物理级别定义在你窗⼝⾥有多少⾏。使⽤RANGE选项取决于ORDER BY值在窗⼝⾥有多少⾏被包含。因此当你使⽤RANGE选项时有性能上的巨⼤区别。在接下来的⽂章我会讨论下这些副作⽤。

本文发布于:2023-07-02 19:53:09,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1074729.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:选项   汇总   定义   计算
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图