ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

Please indicate the source for the original reprint: 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);

 

Simple query

SELECT * FROM EMPLOYEE;


 

Grouped Sort Query

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

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326392622&siteId=291194637