位置: 编程技术 - 正文

SQLSERVER 2005的ROW_NUMBER、RANK、DENSE_RANK的用法

编辑:rootadmin
ROW_NUMBER()说明:返回结果集分区内行的序列号,每个分区的第一行从 1 开始。语法:ROW_NUMBER () OVER ( [ <partition_by_clause> ] <order_by_clause> ) 。备注:ORDER BY 子句可确定在特定分区中为行分配唯一 ROW_NUMBER 的顺序。参数:<partition_by_clause> :将 FROM 子句生成的结果集划入应用了 ROW_NUMBER 函数的分区。 <order_by_clause>:确定将 ROW_NUMBER 值分配给分区中的行的顺序。返回类型:bigint 。示例:/*以下示例将根据年初至今的销售额,返回 AdventureWorks 中销售人员的 ROW_NUMBER。*/USE AdventureWorksGOSELECT c.FirstName, c.LastName, ROW_NUMBER() OVER(ORDER BY SalesYTD DESC) AS 'Row Number', s.SalesYTD, a.PostalCodeFROM Sales.SalesPerson s JOIN Person.Contact c on s.SalesPersonID = c.ContactIDJOIN Person.Address a ON a.AddressID = c.ContactIDWHERE TerritoryID IS NOT NULL AND SalesYTD <> 0/*FirstName LastName Row Number SalesYTD PostalCode--------- ---------- ---------- ------------ ----------------------------Shelley Dyck 1 . Gail Erickson 2 . Maciej Dusza 3 . Linda Ecoffey 4 . Mark Erickson 5 . Terry Eminhizer 6 . Michael Emanuel 7 . Jauna Elson 8 . Carol Elliott 9 . Janeth Esteves . Martha Espinoza . Carla Eldridge . Twanna Evans . ( 行受影响)*//*以下示例将返回行号为 到 (含)的行,并以 OrderDate 排序。*/ USE AdventureWorks;GOWITH OrderedOrders AS(SELECT SalesOrderID, OrderDate,ROW_NUMBER() OVER (order by OrderDate)as RowNumberFROM Sales.SalesOrderHeader ) SELECT * FROM OrderedOrders WHERE RowNumber between and ;/*SalesOrderID OrderDate RowNumber------------ ----------------------- -------------------- -- ::. -- ::. -- ::. -- ::. -- ::. -- ::. -- ::. -- ::. -- ::. -- ::. -- ::. ( 行受影响)*/--------------------------------------------------------------RANK()说明:返回结果集的分区内每行的排名。行的排名是相关行之前的排名数加一。语法:RANK () OVER ( [ < partition_by_clause > ] < order_by_clause > )备注:如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名。 例如,如果两位顶尖销售员具有同样的 SalesYTD 值,他们将并列第一。 由于已有两行排名在前,所以具有下一个最大 SalesYTD 的销售人员将排名第三。 因此,RANK 函数并不总返回连续整数。 用于整个查询的排序顺序决定了行在结果集中的显示顺序。这也隐含了行在每个分区中的排名。参数:< partition_by_clause > :将 FROM 子句生成的结果集划分为要应用 RANK 函数的分区。 < order_by_clause >:确定将 RANK 值应用于分区中的行时所基于的顺序。返回类型:bigint示例:/*以下示例按照数量对清单中的产品进行了排名。行集按 LocationID 分区,按 Quantity 排序。USE AdventureWorks;GOSELECT i.ProductID, p.Name, i.LocationID, i.Quantity, RANK() OVER (PARTITION BY i.LocationID order by i.Quantity) as RANKFROM Production.ProductInventory i JOIN Production.Product p ON i.ProductID = p.ProductIDORDER BY p.NameGO/*ProductID Name LocationID Quantity RANK----------- -------------------------------------------------- ---------- -------- --------------------1 Adjustable Race 6 Adjustable Race 1 Adjustable Race Bearing Ball 6 Bearing Ball 1 Bearing Ball BB Ball Bearing BB Ball Bearing 1 BB Ball Bearing 6 Headset Ball Bearings 1 Headset Ball Bearings 6 Headset Ball Bearings Blade ......( 行受影响)*/ SQL code --接上.-------------------------------------------------------------------------------------DENSE_RANK()说明:返回结果集分区中行的排名,在排名中没有任何间断。行的排名等于所讨论行之前的所有排名数加一。语法:DENSE_RANK () OVER ( [ < partition_by_clause > ] < order_by_clause > )备注:如果有两个或多个行受同一个分区中排名的约束,则每个约束行将接收相同的排名。 例如,如果两位顶尖销售员具有相同的 SalesYTD 值,则他们将并列第一。 接下来 SalesYTD 最高的销售人员排名第二。该排名等于该行之前的所有行数加一。 因此,DENSE_RANK 函数返回的数字没有间断,并且始终具有连续的排名。 整个查询所用的排序顺序确定了各行在结果中的显示顺序。这说明排名第一的行可以不是分区中的第一行。参数:< partition_by_clause > :将 FROM 子句所生成的结果集划分为数个将应用 DENSE_RANK 函数的分区。 < order_by_clause >:确定将 DENSE_RANK 值应用于分区中各行的顺序。返回类型:bigint示例:/*以下示例返回各位置上产品数量的 DENSE_RANK。 */USE AdventureWorks;GOSELECT i.ProductID, p.Name, i.LocationID, i.Quantity, DENSE_RANK() OVER (PARTITION BY i.LocationID order by i.Quantity) as DENSE_RANKFROM Production.ProductInventory i JOIN Production.Product p ON i.ProductID = p.ProductIDORDER BY Name;GO/*ProductID Name LocationID Quantity DENSE_RANK----------- -------------------------------------------------- ---------- -------- --------------------1 Adjustable Race 1 Adjustable Race 6 Adjustable Race All-Purpose Bike Stand 7 AWC Logo Cap 7 BB Ball Bearing BB Ball Bearing 6 BB Ball Bearing 1 */-------------------------------------------------------------------------------------------------------将上面三个函数放在一起计算,更能明显看出各个函数的功能。CREATE TABLE rankorder(orderid INT,qty INT)INSERT rankorder VALUES(,)INSERT rankorder VALUES(,)INSERT rankorder VALUES(,)INSERT rankorder VALUES(,)INSERT rankorder VALUES(,)INSERT rankorder VALUES(,)INSERT rankorder VALUES(,)INSERT rankorder VALUES(,)INSERT rankorder VALUES(,)INSERT rankorder VALUES(,)INSERT rankorder VALUES(,)INSERT rankorder VALUES(,)GO--对一个列qty进行的排序SELECT orderid,qty, ROW_NUMBER() OVER(ORDER BY qty) AS rownumber, RANK() OVER(ORDER BY qty) AS rank, DENSE_RANK() OVER(ORDER BY qty) AS denserankFROM rankorderORDER BY qty/*orderid qty rownumber rank denserank----------- ----------- -------------------- -------------------- -------------------- 1 1 2 1 3 1 4 1 5 5 6 6 7 6 8 6 9 9 9 9 5( 行受影响)*/ --对两个列qty,orderid进行的排序SELECT orderid,qty, ROW_NUMBER() OVER(ORDER BY qty,orderid) AS rownumber, RANK() OVER(ORDER BY qty,orderid) AS rank, DENSE_RANK() OVER(ORDER BY qty,orderid) AS denserankFROM rankorderORDER BY qty,orderiddrop table rankorder/*orderid qty rownumber rank denserank----------- ----------- -------------------- -------------------- -------------------- 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 ( 行受影响)*/

推荐整理分享SQLSERVER 2005的ROW_NUMBER、RANK、DENSE_RANK的用法,希望有所帮助,仅作参考,欢迎阅读内容。

SQLSERVER 2005的ROW_NUMBER、RANK、DENSE_RANK的用法

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

SQL的默认端口的修改方法 1、默认端口SQLServer的默认TCP端口是,UDP端口是。连接字符串为Provider=SQLNCLI.1;PersistSecurityInfo=True;UserID=****;Password=**;InitialCatalog=tablename;DataSource='h

SqlServer 中使用row_number()在一个查询中删除重复记录 下面我们来看下,如何利用它来删除一个表中重复记录:IfExists(Select*Fromtempdb.Information_Schema.TablesWhereTable_NameLike'#Temp%')DropTable#tempCreateTable#temp([Id]int,[Name]varc

SQLServer分布式事务问题 一、问题现象在执行SQLServer分布式事务时,在SQLServer下收到如下错误:消息,级别,状态2,过程xxxxx,第行无法执行该操作,因为链接服务器"x

标签: SQLSERVER 2005的ROW_NUMBER、RANK、DENSE_RANK的用法

本文链接地址:https://www.jiuchutong.com/biancheng/319323.html 转载请保留说明!

上一篇:sqlserver2005 TSql新功能学习总结(数据类型篇)

下一篇:SQL2005的默认端口的修改方法(sql默认路径在哪里)

  • 劳务公司一般纳税人可以抵扣进项税吗
  • 已经抵扣过的进项票对方红冲之后怎么做账报税
  • 小微企业城建税优惠政策2023
  • 转让无形资产所有权税率
  • 怎么开具商业承兑票据
  • 印花税购销合同计税金额怎么算
  • 收取职工个人部分养老金怎么做分录
  • 负债月末正常余额是什么
  • 增值税发票红字发票怎么做凭证
  • 增值税纳税申报表怎么填
  • 免征增值税和附加税区别
  • 金税盘忘记清卡了
  • 企业购进货物被没收 进项税额能否抵扣?
  • 一个月的销售额
  • 如何代开外籍人员个人所得税完税凭证?
  • 工业企业和其他企业经营的对象
  • 出口退税如何办理手续
  • 收到工程结算单,没有发票,能入成本吗
  • MAC系统如何卸载重装安装W7系统
  • 农业产品免税范围注释
  • 报销通行费会计分录
  • 职工福利费支付范围
  • 贸易公司销售
  • 电脑网速不好怎么提升网速
  • 银行存款和账面的关系
  • 增值税专票开错了可以作废吗
  • 股东借款给公司会计分录
  • 进程process.acore已停止怎么办
  • php curl命令详解
  • 技术维护费计入
  • 供热企业享受增值税吗
  • 投资收益会计准则
  • php连接数据库的基本步骤是什么
  • ChatGPT会让6个低端岗位失业
  • pytorch怎么入门
  • uniapp下拉
  • 老师不干了可以从事什么行业
  • 为博客园开发了什么项目
  • 定额备用金制度报销时用什么科目
  • 企业欠缴税款违法吗
  • 期初余额调整怎么做凭证
  • 补充登记法是全部都用蓝字吗
  • 清算期间发生的利息支出应计入
  • 给员工打了备用金后归还怎么做账
  • 应收管理费,做应收款处理会计分录
  • 进项发票还未收到可以认证吗
  • 财务报表年报里面的利息费用怎么填
  • 公司注销时应付账款怎么处理
  • 未认证的发票不入账有什么影响
  • 超市的进场费怎么入会计科目
  • 咨询费开发票应该选哪一项?
  • 成本费用总额占营业总收入的比率
  • 收付转三种凭证怎么装订
  • 劳动纠纷给员工的建议
  • 购买的垃圾袋计入什么科目
  • 租赁办公楼
  • 利润总额与应纳税所得额的差异国内动态
  • 多种不同的 MySQL 的 SSL 配置
  • 屏幕共享远程控制
  • freebsd服务器搭建
  • windows注册表修改任务栏
  • centos7网络配置文件在哪
  • centos 操作
  • linux打包压缩文件的命令
  • vps如何搭建ss
  • 电子版win10怎么安装
  • js如何将毫秒转换为日期
  • js怎么用jquery
  • 在下次启动计算机时会自动关机。重起后恢复正常(“绿色版”)
  • node调试工具
  • javascript零基础入门
  • javascript的弹窗
  • python如何查看
  • js用于
  • js校验密码复杂度
  • js中倒计时器怎么实现
  • 广东省国家税务局电子税务局官网
  • 广告费扣除限额15%和30%
  • 什么叫售后回租赁合同
  • 广东省税务局发票查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设