Series: Subject: Topic:

Question: 171 of 193

SELECT DISTINCT (a.sal) FROM EMP A WHERE &N = (SELECT COUNT (DISTINCT (b.sal)) FROM EMP B WHERE a.sal < = b.sal);

For Eg:-

Enter value for n: 2

SAL

---------

3700

Asked by:
Interview Candidate | Asked on: Aug 29th, 2004

Showing Answers 1 - 62 of 62 Answers

Answered On : Sep 19th, 2005

SELECT mod(ROWNUM,2),sup_cd, qtn_price FROM (SELECT sup_cd, qtn_price FROM TB_B_sup_price C1 ORDER BY qtn_price DESC) WHERE ROWNUM<=n+1 MINUSSELECT mod(ROWNUM,2),sup_cd, qtn_price FROM (SELECT sup_cd, qtn_price FROM TB_B_sup_price C1 ORDER BY qtn_price DESC) WHERE ROWNUM<=n-1 order by qtn_price desc

Login to rate this answer.

Try this one

select sal from (select distinct(sal) from emp where sal is NOT NULL order by sal dsc) where rownum =n

1 User has rated as useful.

Login to rate this answer.

Answered On : Jan 2nd, 2006

directly we can not give the condition as rownum=2....this is the most optimal soluton for the given problemselect * from (select rownum r,salary from (select distinct(salary)from employees where salary is NOT NULL order by salary desc)) where r=2try out this.

Login to rate this answer.

Answered On : Jan 18th, 2006

we cant use rownum=n so u can use this select min(sal) "nth highest sal" from emp where sal in (select sal from (select DISTINCT(sal) from emp order by sal desc) where rownum<=n)

Login to rate this answer.

Answered On : Jan 18th, 2006

we cant use rownum=n so u can use this select min(sal) "nth highest sal" from emp where sal in (select sal from (select DISTINCT(sal) from emp order by sal desc) where rownum<=n)

Login to rate this answer.

SELECT LEVEL,MAX(SAL) FROM

WHERE LEVEL = N

CONNECT BY PRIOR SAL>SAL

GROUP BY LEVEL;

Login to rate this answer.

Answered On : Jun 4th, 2006

select * from

(

select rownum rn,sal from

(select distinct(sal) from emp order by sal)) x

where x.rn=5;

Login to rate this answer.

thiswill work if u give the number instead of n for ex:

gives the Second highest Salary n the table

select min(salary) from xxyy where value in(select top 2 alary from xxyy order by value desc)

Login to rate this answer.

select * from (select rownum rn,sal from(select * from emp order by sal desc))

where rn=&m;

Login to rate this answer.

Answered On : Nov 7th, 2006

Best way is using CORRELATED SUBQUERY : as below

Select * From TableName T1 Where

(N-1) = (Select Count(Distinct(E2.ColumnName)) From TableName T2 Where T2.ColumnName > T1.ColumnName)

For Required Case We can use it as :-

Select * From EMP T1 Where

(2-1) = (Select Count(Distinct(E2.sal)) From EMP T2 Where T2.sal > T1.sal)

Login to rate this answer.

The best way is to do using Rank.

SELECT * FROM (select COL1,COL2, dense_rank() OVER (order BY COLUMN_TO_SELECT_NTH_VAL) rank from TABLE_NAME) WHERE rank=N;

2 Users have rated as useful.

Login to rate this answer.

Answered On : Mar 30th, 2007

Try this:

SELECT RANK,SALARY FROM(SELECT ROWNUM AS RANK,SALARY FROM(SELECT DISTINCT SALARY FROM EMPLOYEES WHERE SALARY IS NOT NULL ORDER BY SALARY DESC)) WHERE RANK =n;

Login to rate this answer.

Answered On : Mar 30th, 2007

can u try this it is much better than this i think

select * from emp(select rownum rn,sal from (select * from emp order by sal desc))

where rn=&m

u can dynamically enter which highest sal u can get it

2 Users have rated as useful.

Login to rate this answer.

hi,

Use the top-analysis feature which introduce from oracle 8i:

SELECT rownum, empno, ename, sal

FROM (SELECT empno, ename, sal from emp

ORDER BY sal desc )

WHERE rownum < n; (n=any valid integer)

Thanks,

Tina K.

1 User has rated as useful.

Login to rate this answer.

Answered On : May 25th, 2007

Hi

I think the best way of doing this is given here........

1 select b.sal from

2 (select distinct sal from emp) a,

3 (select distinct sal from emp) b

4 where a.sal>=b.sal

5* group by(b.sal) having count(b.sal)=n;

try it ......to replace **n** with the number u want

Login to rate this answer.

Answered On : Jul 11th, 2007

Hi,

try this...

select max(sal)

from emp

where rownum<=&v

order by sal desc;

Login to rate this answer.

Answered On : Jul 21st, 2007

This one is the most appropiate answer

SELECT LEVEL, MAX(Sal) FROM Emp WHERE LEVEL = &LevelNo CONNECT BY PRIOR Sal > Sal GROUP BY LEVEL

Login to rate this answer.

Answered On : Jul 30th, 2007

This also works:

select * from

(select * from

(select * from

(select distinct(salary)from employee

order by 1 desc

)

where rownum < (&N+1)

)

)

where rownum=1

Login to rate this answer.

Answered On : Aug 13th, 2007

(1)

select * from empl a

where 9=(select count(*) from (select distinct salary from empl)b

----------------------------------

In this query in mqin query use 9= for finding 9th highest salary employee,

9>= for finding nine high salary employees,

9<= for finding nine low salary employees.

----------------------------------

or we can use this query also-

----------------------------------

(I) for finding 9th highest salary:-

select max(salary) from (select * from (select distinct salary from empl order by salary desc)where

rownum<=9);(II) for finding nine high salary employees :-

select * from (select distinct salary from empl order by salary desc)where

rownum<=9;

(III) for finding nine low salary employees :-

where rownum<=9;

Login to rate this answer.

Answered On : Aug 15th, 2007

To find second highest salary we cannot use = operator in TOP N analysis

select rownum,sal from (select sal from emp where sal <(select max(sal) from emp) order by sal desc) where rownum < 2

Login to rate this answer.

n=9th

select a.empno,rank() over(order by sal) sal_rank from emp a

select * from(

select a.empno,rank() over(order by sal) sal_rank from emp a

)where sal_rank=9;

Login to rate this answer.

Answered On : Sep 21st, 2007

To get nth highest sal:

This is the easy way to get that:

for eg:

5th

select max(sal) from emp where sal not in (select top4 sal from emp order by sal desc)

OR

select min(sal) from emp where salin (select top 5 sal from emp order by sal desc)

Login to rate this answer.

Answered On : Oct 3rd, 2007

Shortest Query

SELECT **MIN(e.salary) FROM (SELECT salary
FROM employee ORDER BY salary DESC) e WHERE rowid <= n;**

Login to rate this answer.

Answered On : Oct 25th, 2007

select sal from (select distinct sal from emp order by desc)

where rownum < &&n

minus

select sal from (select distinct sal from emp order by desc)

where rownum < (&n -1)

Login to rate this answer.

Answered On : Dec 30th, 2008

View all questions by vidyamurali2003 View all answers by vidyamurali2003

SELECT v.sal FROM (SELECT TO_NUMBER(salary) sal,rank() over (ORDER BY TO_NUMBER(salary) DESC) ranksal FROM employee ORDER BY 1 DESC)v WHERE v.ranksal=6

Pls note where 6 is the ranknumber

Login to rate this answer.

SELECT MIN(sal)

FROM emp

WHERE sal IN (SELECT sal

FROM (SELECT DISTINCT sal

FROM emp

ORDER BY sal DESC)

WHERE rownum <= n);

Login to rate this answer.

select * from (SELECT emp_id, ROW_NUMBER() OVER(ORDER BY salary DESC) AS salary, PostalCode

FROM salary

)a

where a.salary=n

a=1,2,3,4,................

Put a's value whatever u want............

Login to rate this answer.

SELECT MIN(salary) FROM (SELECT DISTINCT TOP 6 salary FROM empinfo ORDER BY salary desc) empinfo;

This query works perfectly in MS SQL SERVER

Login to rate this answer.

SELECT min(salary) FROM (SELECT DISTINCT TOP 6 salary FROM empinfo ORDER BY salary DESC) empinfo;

Login to rate this answer.

SELECT salary

FROM employee

ORDER BY salary DESC

LIMIT n-1,1

Login to rate this answer.

Empsal table data

700

500

100

900

400

200

600

750

Query to find second highest salary from table Empsal

mysql>select distinct(max(e.salary)) from Empsal e

>where e.salary in(

>select e1.salary from Empsal e1 where e1.salary<(select max(salary) from Empsal));

Output=750

Query to find third highest salary from table Empsal

mysql>select distinct(max(e.salary)) from Empsal e

>where e.salary in(

>select e1.salary from Empsal e1 where e1.salary<

>(select max(e1.salary) from Empsal e1

>where e1.salary IN(

>select e2.salary from Empsal e2 where

>e2.salary<(select max(salary) from Empsal))));

Output=700

Login to rate this answer.

select column1,column2 from tablename(ex:sailors s1) where n-1=(

select count(*) from sailors s2 where s2.rating>s1.rating);

Explanation **: **The sub query selects the count number in descending order just like an array.

Then array like indexes matches to n-1 to give exact result;

Request:please correct it if any mistakes. i have executed it and got good results.

Login to rate this answer.

Query:

select min(salary) from (select distinct salary from ranjith1 where salary is NOT NULL order by salary desc) where rownum<=&n;

Here the n is nth salary.

It will work perfectely..

Thanks

Ranjith

Login to rate this answer.

select * from emp where sal=(

SELECT DISTINCT (a.sal) FROM EMP A WHERE &N = (SELECT COUNT (DISTINCT (b.sal)) FROM EMP B WHERE a.sal<=b.sal));

Login to rate this answer.

select * from emp

where sal in(select max(sal) from emp

where level=&levelno

connect by prior sal>sal

group by level)

Thanks&Regards

Kethinenisarath

Login to rate this answer.

select level,max(sal)

from emp

group by level;

Login to rate this answer.

Answered On : Jul 18th, 2011

how does the following query work to find the nth highest salary

Code

- SELECT DISTINCT(A.SALARY) FROM EMPLOYEE A
- WHERE &SALARY = (SELECT COUNT(DISTINCT(B.SALARY)) FROM EMPLOYEE B
- WHERE A.SALARY<=B.SALARY);

Login to rate this answer.

Answered On : Jul 25th, 2011

You can find Nth highest salary in emp table using the following query.You can replace the Nth value with what u want.....

select min(sal) max from (select * from emp order by sal desc) where rownum<=N;

Login to rate this answer.

Answered On : Jul 25th, 2011

To find Nth highest sal in emp table......use the following query .You can replace it N with what ever number u want......

select min(sal) from (select * from emp order by sal desc) where rownum<=N;

for example for 5th highest salary:

select min(sal) max from (select * from emp order by sal desc) where rownum<=5;

Login to rate this answer.

Answered On : Jul 25th, 2011

To find Nth highest sal in emp table......use the following query .You can replace it N with what ever number u want......

select min(sal) from (select * from emp order by sal desc) where rownum<=N;

for example for 5th highest salary:

select min(sal) max from (select * from emp order by sal desc) where rownum<=5;

Login to rate this answer.

Answered On : Jul 25th, 2011

Code

SELECT Top n DISTINCT Emp_Sal FROM Emp ORDER BY Emp_Sal DESC

Login to rate this answer.

Answered On : Jul 26th, 2011

select sal from (select sal from emp where sal is not null order by sal desc) where rownum=n

Login to rate this answer.

Answered On : Jul 31st, 2011

select * from < table name > e where row num=(select count (distinct coloumn name) from < table name > where e.coloumn name < = coloumn name) For example: we have to find the six th maximum salary from the table employee Ans: select * from employee e where 6=(select count(distinct salary ) from employee where e.salary < = salary)

Code

FOR example: Ans:

Login to rate this answer.

Answered On : Aug 9th, 2011

SELECT LEVEL,MAX(sal) --SELECTING level and highest salary

FROM EMP

CONNECT BY PRIOR sal > sal --checking nth highest salary by optimiser

WHERE LEVEL=&LEVEL -- allow user to enter a number to see thatmuch highest salary

GROUP BY LEVEL;

Login to rate this answer.

Answered On : Aug 17th, 2011

Code

SELECT Level , Max(sal) FROM <Table_Name> WHERE Level=&Level Connect BY Prior sal>sal GROUP BY Level

Login to rate this answer.

Answered On : Aug 19th, 2011

Hi Guys,

This query is efficient way to compare all other queries. Because all other queries using Joins. But I have used sub query concept.Code

SELECT MIN(sal) FROM ( SELECT DISTINCT(sal) FROM prsn t1 ORDER BY sal DESC FETCH FIRST N ROWS ONLY ) AS A

Login to rate this answer.

Answered On : Aug 27th, 2011

select min(sal)

from table_name

where sal in (select top N sal

from table_name

order by sal desc);

Login to rate this answer.

Answered On : Sep 13th, 2011

View all questions by srinivasmallabathula View all answers by srinivasmallabathula

For this 2 ways are there.

1.select sal from (select sal from emp order by sal desc) where rownum <= n

minus

select sal from (select sal from emp order by sal desc) where rownum < n

2.select sal from emp e1 where (n-1)=select count(*) from emp e2 where e1.salary > e2.salary

But first approach is best approach because in second case one row of first table is compared with all the rows of second table.So performance will be reduced.

Login to rate this answer.

Code

SELECT ROWNUM,empno,ename,sal,job FROM (SELECT empno,ename,sal,job FROM emp ORDER BY sal DESC) GROUP BY empno,ename,sal,job WHERE ROWNUM=&n

Login to rate this answer.

Answered On : Nov 27th, 2011

select * from emp e1 where &n=(select count(*) from emp e2 where e1.sal < e2.sal);

in this query n=0 means first highest

n=1 means second highest

n=2 means third highest

Login to rate this answer.

Answered On : Dec 2nd, 2011

Hope this will workout as per your requirementCode

SELECT DISTINCT MAX(SAL),ENAME FROM EMP WHERE SAL = (SELECT MAX(SAL) FROM EMP) --WHERE ROWNUM =1 GROUP BY ENAME ORDER BY 1 ASC

Login to rate this answer.

Answered On : Jan 10th, 2012

Code

SELECT min(sal) FROM (SELECT DISTINCT sal FROM emp ORDER BY sal DESC) WHERE rownum<=N

Login to rate this answer.

Answered On : Jan 15th, 2012

Code

SELECT ename,empno,sal FROM ( SELECT ename,empno,sal FROM scott.emp ORDER BY sal DESC) GROUP BY rownum,ename,empno,sal HAVING rownum = 5

Login to rate this answer.

Answered On : Jan 17th, 2012

Hi..

your query returns fisrt 5 max salaries but the question is nth maximum salary so your query will be :

select min(salary) Salary from (select salary from employees where salary is NOT NULL order by salary desc) where rownum < = 5

here it will show 5th max salary.

Try this and let me know if my query is wrong.

Login to rate this answer.

Code

SELECT min(sal) FROM (SELECT DISTINCT(sal) FROM emp ORDER BY DESC LIMIT n)

Login to rate this answer.

Select Emp_Name from emp_table where Id=(Select Emp_Id from Salary Order By salary Desc limit 0,1)

Login to rate this answer.

this is the simplest of all :)

Login to rate this answer.

Answered On : May 4th, 2012

where n is the number of person you want to show. eg: if n=3,itll show first three values.Code

SELECT rownum,salary,last_name FROM (SELECT salary,last_name FROM employees ORDER BY salary DESC) WHERE rownum<=n;

Login to rate this answer.

Answered On : May 29th, 2012

Easiest way to find the nth highest salary

Code

SELECT salary FROM employees WHERE salary= (SELECT MAX(salary) FROM (SELECT DISTINCT salary FROM employees WHERE rownum<=n-1 ORDER BY salary DESC)); n=nth employee salary

Login to rate this answer.

Answered On : May 31st, 2012

May be we can have the right results with the above queries as mentioned above.... pls try to use the one below to understand clearly to get the 3rd max sal.

Select Esal from (Select Esal from Emp order by Desc) where Rownum<4

Minus

Select Esal from (Select Esal from Emp order by Desc) where Rownum<3

Login to rate this answer.

Code

SELECT * FROM (SELECT employee_id, salary, dense_rank() OVER ( ORDER BY salary DESC) r FROM employees) a WHERE a.r =3 ;

Login to rate this answer.

Answered On : Oct 27th, 2012

This will work for only highest salary n=1 but not work for 2nd and rest nth salary...

Did you have tried this?

Login to rate this answer.

- Finding cobol or cobol - db2
- How to write an query for the following?
- How many child tables are possible to create based on one parent table
- How to find the particular word in text file and how to split and capture total line of the founded word using vb scripting?
- What is the use of alias table?
- How to split the line and capture the line in text file using v script in QTP?
- How can I verify the latest data from above table?
- To check the target table for data quality?
- Can we drop hash partition in Oracle table?
- Boundary value analysis

- Response time for uploading and downloading of file.
- Db2 table change - how impact analysis can be done?
- Database design questions
- How to find out the regularly changing value in a single line?
- Scenario based question
- Database design
- Explain the usage of type record, with datatype of the records as associative array
- Can transfer function of a system be equal to its homogeneous solution?
- Indexing on frequently updated table
- How to negotiate for salary package during interview?

- What is the exact diff between 1nf,2nf,3nf,4nf and bcnf?
- Do you think it is important to write SQL statements so as to limit the amount of data returned?
- Explain about supporting time-constrined SQL queries in Oracle?
- What is the meaning of cost, card, bytes?
- How you were passing cursor variables in PL/SQL 2.2?

Get invaluable Interview and Career Tips delivered directly to your inbox. Get your news alert set up today, Once you confirm your Email subscription, you will be able to download Job Inteview Questions Ebook . Please contact me if you there is any issue with the download.

Copyright © 2014 GeekInterview.com | All Rights Reserved