【T-SQL系列】新的排序函数

原文:【T-SQL系列】新的排序函数

如:ROW_NUMBER、RANK、DENSE_RANK
三个分析函数都是按照col1分组内从1开始排序

ROW_NUMBER() 是没有重复值的排序(即使两天记录相等也是不重复的),可以利用它来实现分页
DENSE_RANK() 是连续排序,两个第二名仍然跟着第三名
RANK() 是跳跃拍学,两个第二名下来就是第四名

示例:

DECLARE @t1 TABLE
    (
      Sequence INT ,
      Name VARCHAR(20) ,
      Score INT
    )

INSERT  INTO @t1
        SELECT  1 ,
                ‘甲‘ ,
                7
        UNION ALL
        SELECT  2 ,
                ‘甲‘ ,
                8
        UNION ALL
        SELECT  3 ,
                ‘甲‘ ,
                8
        UNION ALL
        SELECT  4 ,
                ‘甲‘ ,
                8
        UNION ALL
        SELECT  5 ,
                ‘甲‘ ,
                9
        UNION ALL
        SELECT  1 ,
                ‘乙‘ ,
                10
        UNION ALL
        SELECT  2 ,
                ‘乙‘ ,
                6
        UNION ALL
        SELECT  3 ,
                ‘乙‘ ,
                10
        UNION ALL
        SELECT  4 ,
                ‘乙‘ ,
                6
        UNION ALL
        SELECT  5 ,
                ‘乙‘ ,
                8

SELECT  Sequence ,
        Name ,
        Score ,
        ROW_NUMBER() OVER ( ORDER BY Sequence, Score ) AS RowNumber1 ,
        ROW_NUMBER() OVER ( ORDER BY Sequence, Score DESC ) AS RowNumber2 ,
        RANK() OVER ( ORDER BY Score ) AS Rnk ,
        DENSE_RANK() OVER ( ORDER BY Score ) AS DenseRnk ,
        NTILE(15) OVER ( ORDER BY Score ) AS Bucket
FROM    @t1

结果集:

时间: 2024-10-10 10:22:11

【T-SQL系列】新的排序函数的相关文章

SQL语句——16、排序函数

row_number 和伪列rownum类似,都是产生顺序的序列号的,但这个分析函数row_number并不是为整个select数据产生序列,而是为分组后的每个组内产生序列. 比如,要取出每个部分的前两个最高工资的员工 SQL> select deptno,ename,sal from (select deptno,ename,sal, row_number() over(partition by deptno order by sal desc) drn from emp) where drn

Sql Server系列:排序函数

在SQL Server中有4个排序函数:ROW_NUMBER().RANK().DENSE_RANK()及NTILE()函数. 1. ROW_NUMBER()函数 ROW_NUMBER()函数为每条记录添加递增的顺序数值序号,即使存在相同的值也递增序号. 示例: SELECT ROW_NUMBER() OVER (ORDER BY [CategoryID] DESC) AS ROWID, [CategoryID], [CategoryName] FROM [dbo].[Category]

第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all; Select 列 into 新表;字符串函数;日期函数

第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all;  Select 列 into 新表;字符串函数;日期函数 SQL聚合函数 MAX(最大值).MIN(最小值).AVG(平均值).SUM(和).COUNT(数量:记录的条数) 聚合函数对null不计算.如果一行数据都是null,count(*)包含对空值行.重复行的统计. --聚合函数演示 selec

[Oracle系列整理01]PL/SQL 基本查询与排序

本课重点:    1.写SELECT语句进行数据库查询    2.进行数学运算    3.处理空值    4.使用别名ALIASES    5.连接列    6.在SQL PLUS中编辑缓冲,修改SQL SCRIPTS    7.ORDER BY进行排序输出.    8.使用WHERE 字段. 一.写SQL 命令:      不区分大小写.      SQL 语句用数字分行,在SQL PLUS中被称为缓冲区.      最后以:或 / 结束语句.      也可以用RUN来执行语句 二.例1:

sql系列(基础篇)-第二章 约束和排序数据

更好的看↑代码点击VIEW PLAN 第二章 约束和排序数据 1. 在 emp 表中选择工资介于 1500 到 2500 的员工的信息: 注意:使用 between 下边界 and 上边界时,条件包括边界值: [email protected]>l 1 select * from emp 2* where sal between 1500 and 2500 [email protected]>/ EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----

SQL Server 2012 新的分页函数 OFFSET & FETCH NEXT

DECLARE @page INT, @size INT;select @page = 300, @size = 10 SELECT *FROM gpcomp1.GPCUSTWHERE company like 'a%'ORDER BY CUSTNOOFFSET (@page -1) * @size ROWSFETCH NEXT @size ROWS ONLY; SQL Server 2012 新的分页函数 OFFSET & FETCH NEXT,布布扣,bubuko.com

SQL Server之排序函数

Sql Server2005数据库自带一个排序函数ROW_NUMBER(),列表为: 语法:row_number() : over(子句)1.使用row_number()函数进行编号: select row_number() over(order by Sage) id ,* from Student 原理:先按Sage进行排序,排序完后,给每条数据进行编号.注:在使用over等开窗函数时,over里头的分组及排序的执行晚于"where,group by,order by"的执行.结果

SQL中几个常用的排序函数

排序函数是做什么的? 排序函数的作用是基于一个结果集返回一个排序值.排序值就是一个数字,这个数字是典型的以1开始且自增长为1的行值.由ranking函数决定排序值可以使唯一的对于当前结果集,或者某些行数据有相同的排序值.在接下来我将研究不同的排序函数以及如何使用这些函数. 使用RANK函数的例子 RANK函数每个分区的排序都是从1开始."partition"是一组有相同指定分区列值的数据行的集合.如果一个分区中有相同排序列的值(这个列指定在ORDER BY后面),然后相同排序列值的行将

基本排序系列之计数排序

简述计数排序 看了好多别人写的计数排序,看了好久都没看懂,弄了好久最后发现这么简单居然花了几个小时,所以在这里写上,希望和我一样的初学者不会再绕弯路. 一.简述计数排序的思想: 设被排序的数组为A,排序后存储到B,C为临时数组.所谓计数,首先是通过一个数组C[i]计算大小等于i的元素个数,此过程只需要一次循环遍历就可以:在此基础上,计算小于或者等于i的元素个数,也是一重循环就完成.下一步是关键:逆序循环,从length[A]到1,将A[i]放到B中第C[A[i]]个位置上.原理是:C[A[i]]