--在部门内新水排名(如果有相同名次,用dense_rank)
SELECT row_number() over
(PARTITION BY t.deptno --按部门分组
ORDER BY t.sal) rn, --部门内按薪水排序
t.sal, t.ename, t.deptno
FROM emp t;
--分组累计计数,注意相同sal情况
SELECT COUNT(*) over(PARTITION BY t.deptno ORDER BY sal) cn, t.sal, t.ename, t.deptno
FROM emp t;
一、排名函数
1>、计算行号ROW_NUMBER函数
2>、排名和密集排号RANK和DESN_RANK
--示例:
CREATE TABLE dbo.Sales
(
empid VARCHAR(10) NOT NULL PRIMARY KEY,
mgrid VARCHAR(10) NOT NULL,
qty INT NOT NULL
);
INSERT INTO dbo.Sales(empid, mgrid, qty) VALUES
('A', 'Z', 300),
('B', 'X', 100),
('C', 'X', 200),
('D', 'Y', 200),
('E', 'Z', 250),
('F', 'Z', 300),
('G', 'X', 100),
('H', 'Y', 150),
('I', 'X', 250),
('J', 'Z', 100),
('K', 'Y', 200);
CREATE INDEX idx_qty_empid ON dbo.Sales(qty, empid);
CREATE INDEX idx_mgrid_qty_empid ON dbo.Sales(mgrid, qty, empid);
GO
select ROW_NUMBER() OVER (ORDER BY qty) AS seq,
RANK()OVER (ORDER BY qty) AS seq1,
DENSE_RANK() OVER (ORDER BY qty) AS seq2,
*
FROM Sales s
--运行结果
seq seq1 seq2 empid mgrid qty
1 1 1 B X 100
2 1 1 G X 100
3 1 1 J Z 100
4 4 2 H Y 150
5 5 3 C X 200
6 5 3 D Y 200
7 5 3 K Y 200
8 8 4 E Z 250
9 8 4 I X 250
10 10 5 A Z 300
11 10 5 F Z 300
区别:当order by 列表不能唯一决定排序顺序时,ROW_NUMBER是非确定性的。而RANK和DENSE_RANK总是确定性的。即,具有相同排序值的行总是得到相同的排名值。而RANK和DENSE_RANK的区别在于,RANK生成的排名值可能有间断,但可以表明有多少行具有更低的排序值。DENSE_RANK生成的排名值没有间断。
--分析函数:
count(a) over (partition by b order by c)
--上面的count()就是一个分析函数;over可以理解为一个关键字或者标识,有over就表示它前面的函数
--是一个分析函数,否则就是普通的求和函数了;
--()中的partition by是指定分区,或者理解为分组
--()中的order by是指定该分区内的数据的顺序
详细解决方案
排名函数(ROW_NUMBER、RANK、DENSE_RANK)及OVER子句
热度:2 发布时间:2024-01-22 03:15:58.0
相关解决方案
- Parameter index out of range (五 > number of parameters, which is 4)
- error RC2144: PRIMARY LANGUAGE ID not a number,这个异常根本解决办法
- 关于httpWebRequest请求失败异常:The specified call count is not a number
- DATAGRID中显示 的oracle number(10,4)类型数据,怎么把小数点后面的 0 去掉
- Label1.Text = sdr("number").tostring有关问题,待!
- 有时候加了个文件后有下划虚线点上去说:missing xml comment for publicly visible type or number.
- tmboot的时分报错 libifsql.so不能load , The module has an invalid magic number
- tmboot的时候报错 libifsql.so不能load , The module has an invalid magic number,该怎么解决
- Error Loading file-recording number 6,controlsource alias is not found解决办法
- odbc isql db2: 0509-103 The module has an invalid magic number,该如何处理
- 每日背熟一句英语(9)The number you dailed is busy now, pls try again later
- linux 下配置PHP mysql时,在启动/usr/local/mysql/bin/mysqld_safe &报错Operating system error number 13 in a file operation.解决方案
- Tomcat起动web项目报Bad version number in .class file (unable to load class .)错
- JSU省份赛队员选拔赛个人赛1(Coin Change、Fibbonacci Number、Max Num、单词数、无限的路、叠筐)
- new Number()的部类为什么是object
- weblogic起动失败UnsupportedClassVersionError: Bad version number in .class file
- js 之 Number 工具种
- javascript js format number 数目字格式化
- js Number 对象再有几个处理数值的专用方法
- javascript_NAN_NOT A NUMBER
- java.sql.SQLException: ORA-01483: DATE 或 NUMBER 赋值变量的长度无效 透过webService发送数据被限制大小
- Bad version number in .class file的解决办法
- JavaScript中的undefined,null,NaN(Not A Number)跟typeof区别
- object与 Object , number 与Number 区别是什么?解决办法
- the specified call count is not a number :null 异常
- 求sun java 的 serial number,多谢
- java “number++” 的原子性操作有关问题
- Leetcode: Number of 一 Bits
- absent line number information,该怎么处理
- eclipse中编译和运行使用的JDK和JRE级别的有关问题——关于“Bad version number in .class file”错误的解决办法