Thursday, November 8, 2012

how to find 2nd highest salary or 2nd lowest salary?


second highest
SELECT

* FROM employee e1
WHERE

2 = (SELECT COUNT(DISTINCT (e2.Emp_Salary))FROM emp e2 WHERE e2.Emp_Salary >= e1.Emp_Salary)
second lowest
SELECT * FROM employee e1
WHERE

2 = (SELECT COUNT(DISTINCT (e2.Emp_Salary))FROM emp e2 WHERE e2.Emp_Salary <= e1.Emp_Salary)

SELECT salary FROM TN a 
    WHERE n - 1 = (SELECT COUNT(salary) FROM TN b WHERE b.salary > a.salary)
 
 
 
oracle
..........
 
select max(sal) from emp where sal not in (select max(sal) from emp)