Thursday, August 30, 2012

2nd Highest salary from each department

CREATE SEQUENCE EmpSequence
MINVALUE 1
MAXVALUE 9999
START WITH 1
INCREMENT BY 1;

CREATE TABLE PLC2_Employees (
EmployeeID INT ,
EmployeeName VARCHAR2(15),
Department VARCHAR2(15),
Salary NUMBER(16,2)
);

INSERT INTO PLC2_Employees(EmployeeID,EmployeeName, Department, Salary)  VALUES(EmpSequence.NextVal,'T Cook','Finance', 40000);

INSERT INTO PLC2_Employees(EmployeeID,EmployeeName, Department, Salary)  VALUES(EmpSequence.NextVal,'D Michael','Finance', 25000);

INSERT INTO PLC2_Employees(EmployeeID,EmployeeName, Department, Salary)  VALUES(EmpSequence.NextVal,'A Smith','Finance', 25000);

INSERT INTO PLC2_Employees(EmployeeID,EmployeeName, Department, Salary)  VALUES(EmpSequence.NextVal,'D Adams','Finance', 15000);

INSERT INTO PLC2_Employees(EmployeeID,EmployeeName, Department, Salary)  VALUES(EmpSequence.NextVal,'M Williams','IT', 80000);

INSERT INTO PLC2_Employees(EmployeeID,EmployeeName, Department, Salary)  VALUES(EmpSequence.NextVal,'D Jones','IT', 40000);

INSERT INTO PLC2_Employees(EmployeeID,EmployeeName, Department, Salary)  VALUES(EmpSequence.NextVal,'J Miller','IT', 50000);

INSERT INTO PLC2_Employees(EmployeeID,EmployeeName, Department, Salary)  VALUES(EmpSequence.NextVal,'L Lewis','IT', 50000);

INSERT INTO PLC2_Employees(EmployeeID,EmployeeName, Department, Salary)  VALUES(EmpSequence.NextVal,'A Anderson','Back-Office', 25000);

INSERT INTO PLC2_Employees(EmployeeID,EmployeeName, Department, Salary)  VALUES(EmpSequence.NextVal,'S Martin','Back-Office', 15000);

INSERT INTO PLC2_Employees(EmployeeID,EmployeeName, Department, Salary)  VALUES(EmpSequence.NextVal,'J Garcia','Back-Office', 15000);

INSERT INTO PLC2_Employees(EmployeeID,EmployeeName, Department, Salary)  VALUES(EmpSequence.NextVal,'T Clerk','Back-Office', 10000);

select EmployeeName,a.salary,a.department from plc2_employees a,(select sal
ary,department from (select row_number() over (partition by department order by
salary desc) as row_dt, salary, department from plc2_employees) a where a.row_dt
=2) b where a.department=b.department and a.salary=b.salary;

No comments:

Post a Comment