设为首页 收藏本站
查看: 1076|回复: 0

[经验分享] SQL Server 之 与 OVER() 函数

[复制链接]

尚未签到

发表于 2017-7-13 19:13:48 | 显示全部楼层 |阅读模式
  在SQL SERVER 2005/2008支持两种排名开窗函数和聚集开窗函数。
一、 OVER() 函数
  语法结构:OVER( [ PARTITION BY ... ] [ ORDER BY ... ] )
  [1] PARTITION BY 子句进行分组;
  [2] PARTITION BY 子句进行排序。
  窗口函数OVER()指定一组行,开窗函数计算从窗口函数输出的结果集中各行的值。
  开窗函数不需要使用GROUP BY就可以对数据进行分组,还可以同时返回基础行的列和聚合列。
  OVER()函数不能单独使用,必须跟在 排名函数 或 聚合函数后边。
二、排名开窗函数
  ROW_NUMBER()、DENSE_RANK()、RANK()、NTILE()属于排名函数。
  排名开窗函数可以单独使用ORDER BY 语句,也可以和PARTITION BY同时使用。
  PARTITION BY用于将结果集进行分组,开窗函数应用于每一组。
  ODER BY 指定排名开窗函数的顺序。
  注意:在排名开窗函数中必须使用ORDER BY语句。
  语法结构:排名函数 ( ) OVER ( [ <partition_by子句> ] <order_by子句> )
  1、ROW_NUMBER():为每一组的行记录按顺序生成一个唯一的行号。
  2、RANK()也为每一组的行生成一个序号,与ROW_NUMBER()不同的是如果按照ORDER BY的排序,如果有相同的值会生成相同的序号,并且接下来的序号是不连序的。例如两个相同的行生成序号3,那么接下来会生成序号5。
  3、DENSE_RANK()和RANK()类似,不同的是如果有相同的序号,那么接下来的序号不会间断。也就是说如果两个相同的行生成序号3,那么接下来生成的序号还是4。
  4、NTILE (integer_expression) 按照指定的数目将数据进行分组,并为每一组生成一个序号。
三、聚合开窗函数
  很多聚合函数都可以用作窗口函数的运算,如COUNT(),SUM(),AVG(),MAX(MIN()。
  聚合开窗函数只能使用PARTITION BY子句或都不带任何语句,ORDER BY不能与聚合开窗函数一同使用。
  如果窗口函数不使用PARTITION BY 语句的话,那么就是不对数据进行分组,聚合函数计算所有的行的值。
  语法结构:聚合函数( ) OVER ( [ <partition_by子句> ] )

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-393542-1-1.html 上篇帖子: sql server where 条件 区分大小写查询 下篇帖子: 总结Sql Server内置函数实现MD5加密
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表