Frequently Asked interview question on queries in Oracle
Below queries are asked in the interviews frequently
- To find the nth row of a table
SQL> Select *from employee where rowid = (select max(rowid) from employee where rownum
<= 4);
Or
SQL> Select *from employee where rownum <= 4 minus select *from employee where rownum
<= 3;
- To find duplicate rows
SQL> Select *from employee where rowid in (select max(rowid) from employee group by
empno, ename, mgr, job, hiredate, comm, deptno, sal);
Or
SQL> Select empno,ename,sal,job,hiredate,comm , count(*) from employee group by
empno,ename,sal,job,hiredate,comm having count(*) >=1;
-
To delete duplicate rows
SQL> Delete from employee where rowid in (select max(rowid) from employee group by
empno,ename,mgr,job,hiredate,sal,comm,deptno); -
To find the count of duplicate rows
SQL> Select ename, count() from employee group by ename having count() >= 1;
-
How to display alternative rows in a table?
SQL> select *from employee where (rowid,0) in (select rowid,mod(rownum,2) from employee );
-
Getting employee details of each department who is drawing maximum sal?
SQL> select *from employee where (deptno,sal) in
( select deptno,max(sal) from employee group by deptno); -
How to get number of employees in each department , in which department is having more than 2500 employees?
SQL> Select deptno,count() from employee group by deptno having count() >2500;
-
To reset the time to the beginning of the day
SQL> Select to_char(trunc(sysdate),’dd-mon-yyyy hh:mi:ss am’) from dual;
-
To find nth maximum sal
SQL> Select *from employee where sal in (select max(sal) from (select *from emp order
by sal) where rownum <= 5);