Ad Code

Responsive Advertisement

TOP VALUES FIND, TOP_N QUERY :

CREATE A TEST TABLE FOR DEMO CLASS.: 

create table EMP11 (name varchar2(20), dept_no number(10), salary number (20));

insert into emp11 VALUES ('SACHIN',200,1200);
insert into emp11 VALUES ('PAPPU',200,1400);
insert into emp11 VALUES ('RAJESH',200,1800);
insert into emp11 VALUES ('NAMO',205,2200);
insert into emp11 VALUES ('BEENU',201,1000);
==============

SQL> SELECT * FROM (SELECT * FROM EMP11 ORDER BY SALARY DESC) WHERE ROWNUM<6;

NAME                    DEPT_NO     SALARY
-------------------- ---------- ----------
NAMO                        205       2200
RAJESH                      200       1800
PAPPU                       200       1400
SACHIN                      200       1200
SACHIN                      200       1200


TOP _N QUERY FIND THROUGH RANK () OVER(ORDER BY COLUMN_NAME DESC).



SQL> SELECT * FROM (SELECT NAME, SALARY, RANK () OVER (ORDER BY SALARY DESC ) AS
  TOP_N FROM EMP11) WHERE TOP_N<6;

NAME                     SALARY      TOP_N
-------------------- ---------- ----------
NAMO                       2200          1
RAJESH                     1800          2
PAPPU                      1400          3
SACHIN                     1200          4
SACHIN                     1200          4

TOP _N QUERY THROUGH - FORMULA :

SELECT SALARY FROM EMPLYEES E1 WHERE (N-1)=(SELECT COUNT(DISTINCT (SALARY)) FROM EMPLOYYES E2 WHERE E2.SAL>E1.SAL;

NOTE: N IS THE VALUE WHICH YOU SHOULD BE ON THE TOP:

SQL> SELECT   NAME, SALARY FROM EMP11 E1 WHERE (1-1)  = (SELECT COUNT(DISTINCT (
SALARY)) FROM EMP11 E2 WHERE E2.SALARY>E1.SALARY  ) ORDER BY SALARY ASC;

NAME                     SALARY
-------------------- ----------
NAMO                       2200

SQL> SELECT   NAME, SALARY FROM EMP11 E1 WHERE (2-1)  = (SELECT COUNT(DISTINCT (
SALARY)) FROM EMP11 E2 WHERE E2.SALARY>E1.SALARY  ) ORDER BY SALARY ASC;

NAME                     SALARY
-------------------- ----------
RAJESH                     1800

SQL> SELECT   NAME, SALARY FROM EMP11 E1 WHERE (3-1)  = (SELECT COUNT(DISTINCT (
SALARY)) FROM EMP11 E2 WHERE E2.SALARY>E1.SALARY  ) ORDER BY SALARY ASC;

NAME                     SALARY
-------------------- ----------
PAPPU                      1400

SQL> SELECT   NAME, SALARY FROM EMP11 E1 WHERE (4-1)  = (SELECT COUNT(DISTINCT (
SALARY)) FROM EMP11 E2 WHERE E2.SALARY>E1.SALARY  ) ORDER BY SALARY ASC;

NAME                     SALARY
-------------------- ----------
SACHIN                     1200
SACHIN                     1200

SQL>





Post a Comment

0 Comments

Close Menu