CREATE
TABLE
EMP
(
EMPNO
INT
NOT
NULL
,
ENAME
VARCHAR
(10),
JOB
VARCHAR
(9),
MGR
INT
,
HIREDATE
DATE
,
SAL
INT
,
COMM
INT
,
DEPTNO
INT
)
INSERT
INTO
EMP
VALUES
(7369,
'SMITH'
,
'CLERK'
, 7902,
'17-DEC-1980'
, 800,
NULL
, 20);
INSERT
INTO
EMP
VALUES
(7499,
'ALLEN'
,
'SALESMAN'
, 7698,
'20-FEB-1981'
, 1600, 300, 30);
INSERT
INTO
EMP
VALUES
(7521,
'WARD'
,
'SALESMAN'
, 7698,
'22-FEB-1981'
, 1250, 500, 30);
INSERT
INTO
EMP
VALUES
(7566,
'JONES'
,
'MANAGER'
, 7839,
'2-APR-1981'
, 2975,
NULL
, 20);
INSERT
INTO
EMP
VALUES
(7566,
INSERT
INTO
EMP
VALUES
(7654,
'MARTIN'
,
'SALESMAN'
, 7698,
'28-SEP-1981'
, 1250, 1400, 30);
INSERT
INTO
EMP
VALUES
(7698,
'BLAKE'
,
'MANAGER'
, 7839,
'1-MAY-1981'
, 2850,
NULL
, 30);
INSERT
INTO
EMP
VALUES
(7782,
'CLARK'
,
'MANAGER'
, 7839,
'9-JUN-1981'
, 2450,
NULL
, 10);
INSERT
INTO
EMP
VALUES
(7788,
'SCOTT'
,
'ANALYST'
, 7566,
'09-DEC-1982'
, 3000,
NULL
, 20);
INSERT
INTO
EMP
VALUES
(7839,
'KING'
,
'PRESIDENT'
,
NULL
,
'17-NOV-1981'
, 5000,
NULL
, 10);
INSERT
INTO
EMP
VALUES
(7844,
'TURNER'
,
'SALESMAN'
, 7698,
'8-SEP-1981'
, 1500,
NULL
, 30);
INSERT
INTO
EMP
VALUES
(7876,
'ADAMS'
,
'CLERK'
, 7788,
'12-JAN-1983'
, 1100,
NULL
, 20);
INSERT
INTO
EMP
VALUES
(7900,
'JAMES'
,
'CLERK'
, 7698,
'3-DEC-1981'
, 950,
NULL
, 30);
INSERT
INTO
EMP
VALUES
(7902,
'FORD'
,
'ANALYST'
, 7566,
'3-DEC-1981'
, 3000,
NULL
, 20);
INSERT
INTO
EMP
VALUES
(7934,
'MILLER'
,
'CLERK'
, 7782,
'23-JAN-1982'
, 1300,
NULL
, 10);
SELECT
*
FROM
EMP
ORDER
BY
SAL
DESC
--DIFFERENT METHODES TO GET N-TH MAXIMUM SALARY IN A TABLE.
-- METHODE-1
SELECT
A.EMPNO,A.ENAME,A.SAL
FROM
EMP A
JOIN
EMP B
ON
A.SAL<=B.SAL
GROUP
BY
A.SAL,A.EMPNO,A.ENAME
HAVING
COUNT
(A.SAL)=4
-- METHODE-2
SELECT
TOP
1 *
FROM
(
SELECT
TOP
4 *
FROM
EMP
ORDER
BY
SAL
DESC
)
TEMP
ORDER
BY
SAL
ASC
-- METHODE-3
WITH
CTE
AS
(
SELECT
*,ROW_NUMBER() OVER(
ORDER
BY
SAL
DESC
)
AS
RNUM
FROM
EMP
)
SELECT
*
FROM
CTE
WHERE
RNUM=4
-- METHODE- 4
SELECT
*
FROM
EMP
WHERE
SAL=
(
SELECT
MIN
(SAL)
AS
SAL
FROM
(
SELECT
TOP
4 EMPNO,ENAME,HIREDATE,SAL
FROM
EMP
ORDER
BY
SAL
DESC
)
TEMP
)
-- METHODE- 5
SELECT
*
FROM
EMP A
WHERE
(
SELECT
COUNT
(*)
FROM
EMP
WHERE
SAL>=A.SAL)=4