sql排名函数--四个
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 对于相同的值会并列排名,然后会按序号继续排名,不会跳过序号排名。
4 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排名函数--四个的更多相关文章
- 你真的会玩SQL吗?表表达式,排名函数
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- sql 的是四个排名函数
四个排名函数的用法: http://www.cnblogs.com/xhyang110/archive/2009/10/27/1590448.html 字符串分割:http://www.cnblogs ...
- sql server 排名函数:DENSE_RANK
一.需求 之前sql server 的排名函数用得最多的应该是RoW_NUMBER()了,我通常用ROW_NUMBER() + CTE 来实现分页:今天逛园,看到另一个内置排名函数还不错,自己顺便想了 ...
- SQL2005四个排名函数(row_number、rank、dense_rank和ntile)的比较
排名函数是SQL Server2005新加的功能.在SQL Server2005中有如下四个排名函数: .row_number .rank .dense_rank .ntile 下面分别介绍一下这四个 ...
- 四个排名函数(row_number、rank、dense_rank和ntile)的比较
排名函数是SQL Server2005新加的功能.在SQL Server2005中有如下四个排名函数: 1.row_number 2.rank 3.dense_rank 4.ntile 下面分别介绍一 ...
- Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张Order表并添加一些初始数据方便我们查看效果. CREATE TABLE [dbo].[Order ...
- SQL中的排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别. 在使用排名函数的时候需要注意以下三点: 1.排名函数必须有 OVER 子句. 2.排名函数必须有包含 ORDE ...
- Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)(转载)
Sql 四大排名函数(ROW_NUMBER.RANK.DENSE_RANK.NTILE)简介 排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张O ...
- SQL Server 排名函数( ROW_NUMBER、RANK、DENSE_RANK、NTILE )
排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张Order表并添加一些初始数据方便我们查看效果. CREATE TABLE [dbo].[Order ...
随机推荐
- bzoj1082: [SCOI2005]栅栏(二分答案搜索判断)
1082: [SCOI2005]栅栏 题目:传送门 题解: 是不是一开始在想DP?本蒟蒻也是qwq,结果很nice的错了ORZ 正解:二分+搜索 我们可以先把两种木材都进行排序,那么如果需要的最大木材 ...
- Mysqldump逻辑备份与恢复
文档结构: mysqldump备份影响性能,可能会把内存里面的热数据给冲刷掉,5.7后,新增一个参数,innodb_buffer_pool_dump_pct,控制每个innodb_buffer中转存活 ...
- mysql 字符串的处理
1.SUBSTRING 2.SUBSTRING_INDEX 3. right/left 4.POSITION sql实例 select left(right(SUBSTRING_INDEX(data_ ...
- Java多线程编程模式实战指南(三):Two-phase Termination模式--转载
本文由本人首次发布在infoq中文站上:http://www.infoq.com/cn/articles/java-multithreaded-programming-mode-two-phase-t ...
- WPF XAML
xmlns 在xml中专门用于声明名字控件, xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 是 ...
- layui(弹出层)
首先引入文件 layui.css jquery.min.js layui.js 弹出层 data-method 后面的属性控制是什么弹窗,在js中写方法 <div class="sit ...
- cmd 与 网卡(netsh 命令)
1. 通过命令提示符(cmd)命令连接 Wi-Fi 1.1 连接曾经连接过的 Wi-Fi :: 查看配置的列表(::表示注释) netsh wlan show profile :: 连接 netsh ...
- passwd文件
1.查看/etc/passwd [admin@localhost /]$ cat -n /etc/passwd 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1: ...
- mac pro配置php开发环境
mac pro自带php和apache,所以我们只要配置下就好了 // 启动Apache服务 sudo apachectl start // 重启Apache服务 sudo apachectl res ...
- 【Henu ACM Round#24 B】Gargari and Bishops
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如果写过n皇后问题. 肯定都知道 某个点(i,j)和它在同一条对角线上的点分别是i+j的值和i-j的值相同的点. 然后会发现选择的两 ...