1 row_number

2 rank

3 dense_rank

4 ntile

例子如下:

select * into #MyTable
from
(select '语文' as 课程,70 as 成绩
union all
select '数学' ,80
union all
select '数学' ,80
union all
select '英语' ,90
union all
select '英语' ,100
union all
select '英语' ,70
) as tb

课程   成绩
---- -----------
语文   70
数学   80
数学   80
英语   90
英语   100
英语   70

select 成绩
,row_number()over( order by 成绩 desc) as row_number
,rank() over( order by 成绩 desc) as rank
,dense_rank()over( order by 成绩 desc) as dense_rank
,ntile(4) over( order by 成绩 desc) as ntile
from #MyTable

结果如下

成绩          row_number           rank                 dense_rank           ntile
----------- -------------------- -------------------- -------------------- --------------------
100         1                    1                    1                    1
90          2                    2                    2                    1
80          3                    3                    3                    2
80          4                    3                    3                    2
70          5                    5                    4                    3
70          6                    5                    4                    4

分析:

1 row_number   不论函数的值是什么都一直排序。

2 rank   对于相同的值会并列排名,然后跳过须后继续排名。

3 dense_rank  对于相同的值会并列排名,然后会按序号继续排名,不会跳过序号排名。

ntile 将数据分成若干块,主要用于分析 ?

当然还可以在 row_number()over()中加入partition by 在小组中分别排名:

select 课程,成绩
,row_number()over( partition by 课程 order by 成绩 desc) as row_number
,rank() over( partition by 课程 order by 成绩 desc) as rank
,dense_rank()over( partition by 课程 order by 成绩 desc) as dense_rank
,ntile(4) over( partition by 课程 order by 成绩 desc) as ntile
from #MyTable

课程   成绩          row_number           rank                 dense_rank           ntile
---- ----------- -------------------- -------------------- -------------------- --------------------
数学   80          1                    1                    1                    1
数学   80          2                    1                    1                    2
英语   100         1                    1                    1                    1
英语   90          2                    2                    2                    2
英语   70          3                    3                    3                    3
语文   70          1                    1                    1                    1

sql排名函数--四个的更多相关文章

  1. 你真的会玩SQL吗?表表达式,排名函数

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  2. sql 的是四个排名函数

    四个排名函数的用法: http://www.cnblogs.com/xhyang110/archive/2009/10/27/1590448.html 字符串分割:http://www.cnblogs ...

  3. sql server 排名函数:DENSE_RANK

    一.需求 之前sql server 的排名函数用得最多的应该是RoW_NUMBER()了,我通常用ROW_NUMBER() + CTE 来实现分页:今天逛园,看到另一个内置排名函数还不错,自己顺便想了 ...

  4. SQL2005四个排名函数(row_number、rank、dense_rank和ntile)的比较

    排名函数是SQL Server2005新加的功能.在SQL Server2005中有如下四个排名函数: .row_number .rank .dense_rank .ntile 下面分别介绍一下这四个 ...

  5. 四个排名函数(row_number、rank、dense_rank和ntile)的比较

    排名函数是SQL Server2005新加的功能.在SQL Server2005中有如下四个排名函数: 1.row_number 2.rank 3.dense_rank 4.ntile 下面分别介绍一 ...

  6. Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介

    排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张Order表并添加一些初始数据方便我们查看效果. CREATE TABLE [dbo].[Order ...

  7. SQL中的排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介

    排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别. 在使用排名函数的时候需要注意以下三点: 1.排名函数必须有 OVER 子句. 2.排名函数必须有包含 ORDE ...

  8. Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)(转载)

    Sql 四大排名函数(ROW_NUMBER.RANK.DENSE_RANK.NTILE)简介   排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张O ...

  9. SQL Server 排名函数( ROW_NUMBER、RANK、DENSE_RANK、NTILE )

    排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张Order表并添加一些初始数据方便我们查看效果. CREATE TABLE [dbo].[Order ...

随机推荐

  1. ubuntu 交叉编译qt 5.7 程序到 arm 开发板

    ubuntu 交叉编译qt 5.7 程序到 arm 开发板平台1 ubuntu 12.042 arm-linux-gcc 4.5.13 QT 5.74 开发板210 armcortex-A8 一 概述 ...

  2. JS 控制checkbox 获取 全选 全不选 一行不选择全选则不被选择 所有选择全选被选择

    //点击全选button的事件操作 function selectAll(){ var allcheckBoxs=document.getElementsByName("iTo") ...

  3. 基于FPGA的跨时钟域信号处理——专用握手信号

    在逻辑设计领域,只涉及单个时钟域的设计并不多.尤其对于一些复杂的应用,FPGA往往需要和多个时钟域的信号进行通信.异步时钟域所涉及的两个时钟之间可能存在相位差,也可能没有任何频率关系,即通常所说的不同 ...

  4. SaltStack介绍——SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流

    SaltStack介绍和架构解析 简介 SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流,以毫秒为单位.SaltSta ...

  5. ES shard unassigned的解决方法汇总

    说下shard出现的几个状态说明: relocating_shards shows the number of shards that are currently moving from one no ...

  6. 官方文档 Upgrading Elasticsearch

    Upgrading Elasticsearch Before upgrading Elasticsearch: Consult the breaking changes docs. Use the E ...

  7. (转载)15 个 Android 通用流行框架大全

    15 个 Android 通用流行框架大全 时间:2017-03-20 11:36来源:未知 作者:admin 点击: 2089 次 15 个 Android 通用流行框架大全   1. 缓存 Dis ...

  8. 解决IE7、IE8样式不兼容问题

    方法:要在页面中加入如下HTTP meta-tag: <meta http-equiv="X-UA-Compatible" content="IE=EmulateI ...

  9. firewall 实现数据的端口转发

    端口转发:firewall-cmd --add-port=80/tcp firewall-cmd --add-port=10050/tcp firewall-cmd --add-forward-por ...

  10. requests 常见方法总结

    请求设置:requests.get/post ( url, data={}, params={}, headers={}, timeout=0.01, files={}   Session()    ...