SQL 获取顺序号的四种方法_IDENTITY/RANK/DENSE_RANK/ROW_NUMBER
来源:互联网 发布:python 求最小凸包 编辑:程序博客网 时间:2024/05/22 06:58
SQL 获取顺序号的四种方法_IDENTITY/RANK/DENSE_RANK/ROW_NUMBER
1.最早知道的是用 IDENTITY(int, 1, 1) 塞到临时表中,再与原表中数据相
SELECT CASENO,SEQNUM , IDENTITY(int, 1, 1) AS [ID] into #tmptest FROM table where PO='888'
order by CASENO,CAST(SEQNUM AS INT)
虽然这种方式有点麻烦...
2.后来知道了Dense_rank() over (order by colname)
---才发现原来可以不用塞临时表
3.再后来才知有个更历害的Row_number() over (partition by colname1 order by colname2)
---发觉原来partition不止它有,它们也可以有:
上网查询发现了 后三种排序的区别:
原文:http://blog.csdn.net/winer2008/article/details/4283539
rank,dense_rank,row_number使用和区别
rank,dense_rank,row_number区别
一:语法(用法):
rank() over([partition by col1] order by col2)
dense_rank() over([partition by col1] order by col2)
row_number() over([partition by col1] order by col2)
其中[partition by col1]可省略。
二:区别
三个分析函数都是按照col1分组内从1开始排序
row_number() 是没有重复值的排序(即使两天记录相等也是不重复的),可以利用它来实现分页
dense_rank() 是连续排序,两个第二名仍然跟着第三名
rank() 是跳跃拍学,两个第二名下来就是第四名
为怕再区分不清,摘抄如下:
1.rank
SQL> select name,score,rank() over(partition by name order by score) tt from t;
NAME SCORE TT
---------- ----- ----------
数学 67 1
数学 77 2
数学 78 3
数学 88 4
数学 99 5
语文 60 1
语文 70 2
语文 80 3 <----
语文 80 3 <----
语文 90 5
2.dense_rank
SQL> select name,score,dense_rank() over(partition by name order by score) tt from t;
NAME SCORE TT
---------- ----- ----------
数学 67 1
数学 77 2
数学 78 3
数学 88 4
数学 99 5
语文 60 1
语文 70 2
语文 80 3 <----
语文 80 3 <----
语文 90 4
3.row_number
SQL> select name,score,row_number() over(partition by name order by score) tt from t;
NAME SCORE TT
---------- ----- ----------
数学 67 1
数学 77 2
数学 78 3
数学 88 4
数学 99 5
语文 60 1
语文 70 2
语文 80 3 <----
语文 80 4 <----
语文 90 5
- SQL 获取顺序号的四种方法_IDENTITY/RANK/DENSE_RANK/ROW_NUMBER
- 排名或顺序的函数 ROW_NUMBER/RANK/DENSE_RANK/NTILE
- ROW_NUMBER、RANK、DENSE_RANK的用法
- ROW_NUMBER、RANK、DENSE_RANK的用法
- ROW_NUMBER、RANK、DENSE_RANK的用法
- SqlServer四种排序:ROW_NUMBER()/RANK()/DENSE_RANK()/ntile() over()
- SqlServer四种排序:ROW_NUMBER()/RANK()/DENSE_RANK()/ntile() over()
- SQL Server中Row_number(),Rank()和dense_rank()的用法
- SQL中ROW_NUMBER()/RANK() /DENSE_RANK() OVER函数的基本用法
- 关于sql row_number,rank,dense_rank,ntile函数
- SQL排序 RANK/DENSE_RANK/ROW_NUMBER/NTILE
- sql 排名函数 rank() , row_number() , dense_rank() over
- SQL 序号列ROW_NUMBER,RANK,DENSE_RANK、NTILE
- pandas 实现 sql 中的row_number,dense_rank,rank
- ROW_NUMBER、RANK、DENSE_RANK的用法(1)
- ROW_NUMBER、RANK、DENSE_RANK、NTILE的用法
- ROW_NUMBER、RANK、DENSE_RANK的用法 (加补充)
- ROW_NUMBER、RANK、DENSE_RANK的用法(1)
- 查看Oracle数据库连接数
- NSNumber常用操作
- GetInstance()的用法
- linux系统获取硬盘使用信息
- ubuntu下用tty登录显示login incorrect
- SQL 获取顺序号的四种方法_IDENTITY/RANK/DENSE_RANK/ROW_NUMBER
- “XXX.exe 中的 0xXXXXXXXX处未处理的异常: 0xC0000005: 读取位置 0xXXXXXXXX 时发生访问冲突”的一种解决方案
- NSDictionary
- 有关当前线程/进程/系统效能的API
- C#+天软应用问题总结
- JDK环境部署
- FFT快速傅立叶变换的工作原理
- 将mysql的datetime类型数据,封装成json时遇到的问题
- nginx+tomact+memcached(缓存)集群