原创转载请注明出处:http://agilestyle.iteye.com/blog/2357284
ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
create table
CREATE TABLE EMPLOYEE
(
EMPID INTEGER PRIMARY KEY,
DEPTID INTEGER,
SALARY DECIMAL(10,2)
);
insert data
INSERT INTO EMPLOYEE VALUES(1, 10, 5500.00);
INSERT INTO EMPLOYEE VALUES(2, 10, 4500.00);
INSERT INTO EMPLOYEE VALUES(3, 10, 6500.00);
INSERT INTO EMPLOYEE VALUES(4, 20, 1900.00);
INSERT INTO EMPLOYEE VALUES(5, 20, 4800.00);
INSERT INTO EMPLOYEE VALUES(6, 20, 5800.00);
INSERT INTO EMPLOYEE VALUES(7, 40, 6500.00);
INSERT INTO EMPLOYEE VALUES(8, 40, 14500.00);
INSERT INTO EMPLOYEE VALUES(9, 40, 44500.00);
INSERT INTO EMPLOYEE VALUES(10, 50, 6500.00);
INSERT INTO EMPLOYEE VALUES(11, 50, 7500.00);
INSERT INTO EMPLOYEE VALUES(12, 50, 8500.00);
简单查询
SELECT * FROM EMPLOYEE;

分组排序查询
SELECT EMPID, DEPTID, SALARY,
ROW_NUMBER() OVER (PARTITION BY DEPTID ORDER BY SALARY DESC) rn
FROM EMPLOYEE;

Reference
https://docs.oracle.com/database/121/SQLRF/functions170.htm#SQLRF06100
本文通过创建员工表并插入数据,演示了如何使用ROW_NUMBER()函数进行分组排序查询。具体介绍了如何根据部门ID对员工薪资进行降序排列,并为每一行分配一个唯一的行号。
3万+

被折叠的 条评论
为什么被折叠?



