sql interview scenario

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 17

100 INTERVIEW SCENARIO’S

1) List employee number, name, his department and the department name?
SQL> SELECT E.EMPNO, E.ENAME, E.DEPTNO, D.DNAME
FROM EMP E, DEPT D
WHERE E.DEPTNO=D.DEPTNO;

2) List employee name, his department name and the department location?
SQL> SELECT E.ENAME, D.DNAME, D.LOC
FROM EMP E, DEPT D
WHERE E.DEPTNO=D.DEPTNO;

3) List employee name, department name for all the clerks in the company?
SQL> SELECT E.ENAME, D.DNAME, E.JOB
FROM EMP E, DEPT D
WHERE E.DEPTNO=D.DEPTNO
AND E.JOB='CLERK';

4) List employee number, name, job, his manager’s name, and manager’s job?
SQL> SELECT E.EMPNO, E.ENAME, E.JOB, M.ENAME AS MGR_NAME, M.JOB AS MGR_JOB
FROM EMP E, EMP M
WHERE E.MGR=M.EMPNO;

5) Display different designations in department 20 and 30?


SQL> SELECT DISTINCT (JOB) FROM EMP WHERE DEPTNO = 20
UNION
SELECT DISTINCT (JOB) FROM EMP WHERE DEPTNO = 30;
OR
SQL> SELECT DISTINCT (JOB)
FROM EMP
WHERE DEPTNO IN (20, 30);

6) List the jobs common to department 20 and 30?


SQL> SELECT JOB FROM EMP WHERE DEPTNO=20
INTERSECT
SELECT JOB FROM EMP WHERE DEPTNO=30;
7) List the jobs unique to department 20?
SQL> SELECT DISTINCT (JOB)
FROM EMP
WHERE DEPTNO IN (20);

8) List the employees belonging to the department of ‘MILLER’?


SQL> SELECT * FROM EMP
WHERE DEPTNO = (SELECT DEPTNO FROM EMP
WHERE ENAME='MILLER');
OR
SQL> SELECT * FROM EMP E, DEPT D
WHERE E.DEPTNO=D.DEPTNO
AND D.DEPTNO IN (SELECT DEPTNO FROM EMP
WHERE ENAME='MILLER');

9) List all the employees who have the same job as ‘SCOTT’?
SQL> SELECT * FROM EMP
WHERE JOB = (SELECT JOB FROM EMP
WHERE ENAME='SCOTT');
OR
SQL> SELECT E.EMPNO, E.ENAME, M.ENAME, M.EMPNO
FROM EMP E, EMP M
WHERE E.JOB=M.JOB
AND E.ENAME='SCOTT';
OR
SQL> SELECT * FROM EMP E
WHERE EXISTS (SELECT M.JOB FROM EMP M WHERE E.JOB=M.JOB AND
M.ENAME='SCOTT');

10) Display the names of the employees who are working in Sales or Research
department?
SQL> SELECT E.ENAME, E.DEPTNO, D.DNAME
FROM EMP E, DEPT D
WHERE E.DEPTNO=D.DEPTNO
AND D.DNAME IN ('SALES','RESEARCH')
ORDER BY E.DEPTNO;

11) Display name and salary of the employee who is working in CHICAGO?
SQL> SELECT E.ENAME, E.SAL, D.LOC
FROM EMP E, DEPT D
WHERE E.DEPTNO=D.DEPTNO
AND D.LOC='CHICAGO'
ORDER BY E.DEPTNO;

12) List the details of employees in department 10 who have the same job as in
department 30?
SQL> SELECT * FROM EMP E
WHERE DEPTNO=10
AND EXISTS (SELECT JOB FROM EMP M
WHERE M.DEPTNO=20
AND M.JOB=E.JOB);
OR
SQL> SELECT * FROM EMP
WHERE DEPTNO=10 AND JOB IN
(SELECT JOB FROM EMP WHERE DEPTNO=30);

13) List all the departments that have employees who exist in them?
SQL> SELECT E.* FROM EMP E
WHERE DEPTNO = ANY (SELECT DEPTNO FROM DEPT);
OR
SQL> SELECT D.DEPTNO FROM EMP E EQUI JOIN DEPT D
ON E.DEPTNO=D.DEPTNO;

14) List the employee details if and only if more than 2 employees are present in
department 10?
SQL> SELECT DEPTNO, COUNT (*) FROM EMP
WHERE DEPTNO=10
GROUP BY DEPTNO
HAVING COUNT (*)>2;

15) List the employee names whose salary is greater than the lowest salary of an
employee belonging to department 10?
SQL> SELECT * FROM EMP
WHERE SAL > ANY (SELECT MIN (SAL) FROM EMP WHERE DEPTNO=10)
ORDER BY SAL;

16) List the employee names whose salary is greater than the highest salary of an
employee belonging to department 20?
SQL> SELECT * FROM EMP
WHERE SAL > ANY (SELECT MAX (SAL) FROM EMP WHERE DEPTNO=20)
ORDER BY SAL;

OR
SQL> SELECT EMP.*
FROM EMP
WHERE SAL > (SELECT MAX (SAL) FROM EMP WHERE DEPTNO=20);

17) List the names of the employees drawing the highest salary?
SQL> SELECT * FROM EMP
WHERE SAL IN (SELECT MAX (SAL) FROM EMP);

18) List the employees whose salary is second highest in the company?
SQL> SELECT * FROM EMP
WHERE SAL = (SELECT MAX (SAL) FROM EMP WHERE SAL < (SELECT MAX (SAL) FROM
EMP));
OR
SQL> SELECT * FROM (SELECT DENSE_RANK () OVER (ORDER BY SAL DESC) AS DR,
EMP.*
FROM EMP)
WHERE DR=2;

19) List the details about employees who have maximum number of people
reporting to them?
SQL> SELECT E.MGR, COUNT (*) FROM EMP E
GROUP BY E.MGR
HAVING COUNT (*) = (SELECT MAX (COUNT (*)) FROM EMP M GROUP BY M.MGR);
OR
SQL> SELECT A.*, D.MGR, D.COUNT FROM EMP A
INNER JOIN
(SELECT E.MGR AS MGR, COUNT (*) AS COUNT FROM EMP E
GROUP BY E.MGR
HAVING COUNT (*) = (SELECT MAX (COUNT (*)) FROM EMP M GROUP BY M.MGR)) D
ON D.MGR =A.MGR;
OR
SQL> SELECT E.*, M.EMPNO AS MGR_EMPNO, M.ENAME AS MGR_NAME, (SELECT MAX
(COUNT (*)) FROM EMP GROUP BY MGR) AS CNT
FROM EMP E, EMP M
WHERE E.MGR = ( SELECT MGR FROM EMP
GROUP BY MGR
HAVING COUNT (*) = (SELECT MAX (COUNT (1)) FROM EMP GROUP BY MGR)
)
AND M.EMPNO=E.MGR;

20) List the employees who earn more than the average salary in their own
department?
SQL→SELECT * FROM EMP A WHERE A.SAL >
(SELECT AVG (SAL) FROM EMP B WHERE A.DEPTNO=B.DEPTNO
GROUP BY B.DEPTNO)
ORDER BY DEPTNO;
OR
SELECT * FROM EMP A,(SELECT DISTINCT DEPTNO, AVG(SAL) OVER (PARTITION BY
DEPTNO) AS AVG_SAL FROM EMP ) B
WHERE A.SAL> B.AVG_SAL AND A.DEPTNO=B.DEPTNO
ORDER BY B.DEPTNO;

21) List the employee name, length of his name, his manager’s name whose name
length is greater than their manager’s name length?
SQL> SELECT E.ENAME, LENGTH (E.ENAME) AS EMP_ENAME_LENGTH, M.ENAME AS
MGR_NAME, LENGTH (M.ENAME) AS MGR_ENAME_LENGTH
FROM EMP E, EMP M
WHERE M.EMPNO=E.MGR
AND LENGTH (E.ENAME) > LENGTH (M.ENAME);

22) List employees and his manager’s details, where that employee’s salary is
greater than his manager’s salary?
SQL> SELECT E.EMPNO, E.ENAME, E.SAL, M.SAL AS MGR_SAL, M.EMPNO AS MGR_EMPNO,
M.ENAME AS MGR_NAME
FROM EMP E, EMP M
WHERE E.MGR=M.EMPNO
AND E.SAL>M.SAL;

23) List employees whose salary is highest in their department?


SQL> SELECT * FROM EMP
WHERE (SAL, DEPTNO) IN (SELECT MAX (SAL), DEPTNO FROM EMP GROUP BY DEPTNO) ORDER
BY DEPTNO;

24) List the locations of all the departments and the employees working in them
including the departments without employees?
SQL> SELECT E.ENAME, E.EMPNO, A.LOC, A.D_DEPTNO, A.E_DEPTNO FROM EMP E, DEPT
A
WHERE E. DEPTNO (+) = A. DEPTNO;
OR

SELECT D. LOC, D. DEPTNO AS DEPT_TABLE_DEPTNO, E.DEPTNO AS


EMP_TABLE_DEPTNO, E.*
FROM EMP E FULL OUTER JOIN DEPT D
ON E.DEPTNO=D.DEPTNO
ORDER BY E.DEPTNO;

25) List information of all employee’s along with information of all the
departments?
SQL> SELECT E.*, D.*
FROM EMP E FULL OUTER JOIN DEPT D
ON E.DEPTNO=D.DEPTNO;

26) What is the length of the longest employee name and by how many characters is
it longer than its nearest one?
SQL > SELECT LNAME, DIFF FROM (
SELECT RNO, LNAME, LNAME - PREV_LNAME AS DIFF FROM (
SELECT ROWNUM AS RNO, LNAME, RNK, LAG (LNAME) OVER (ORDER BY RNK) AS
PREV_LNAME FROM (
SELECT LNAME, RNK FROM (
SELECT DISTINCT LENGTH (ENAME) AS LNAME, DENSE_RANK () OVER (ORDER BY
LENGTH (ENAME)) AS RNK
FROM EMP ORDER BY LENGTH (ENAME) DESC)
ORDER BY RNK DESC)
ORDER BY RNO))
WHERE RNO=1;
27) Find out the difference between the maximum salary earned by a person in department number
10 and minimum salary earned by a person in department number 30?
SQL > SELECT A.MORE_SAL - B.LESS_SAL AS DIFF_SAL FROM
(SELECT MAX (SAL) AS MORE_SAL FROM EMP WHERE DEPTNO=10) A,
(SELECT MIN (SAL) LESS_SAL FROM EMP WHERE DEPTNO=30) B;
OR
SELECT T.A, T.B, T.A-T.B AS DIFF_SAL FROM
(SELECT MAX (CASE WHEN DEPTNO=10 THEN MAX (SAL) END) AS A,
MAX (CASE WHEN DEPTNO=30 THEN MIN (SAL) END) AS B
FROM EMP
GROUP BY DEPTNO) T;

28) Find out the difference between average earnings of department no 30 and 40?
SQL > SELECT A.AVG_SAL - B.AVG_SAL AS DIFF_AVG_SAL FROM
(SELECT ROUND (AVG (SAL), 2) AS AVG_SAL FROM EMP WHERE DEPTNO=20) A,
(SELECT ROUND (AVG (SAL), 2) AS AVG_SAL FROM EMP WHERE DEPTNO=30) B;
29) Display the Details of all employees working in the same Department as 'FORD'?
SQL> SELECT * FROM EMP
WHERE DEPTNO IN (SELECT DEPTNO FROM EMP WHERE ENAME='FORD');
OR
SQL> SELECT E.* FROM EMP E, DEPT D
WHERE E.DEPTNO=D.DEPTNO
AND E.DEPTNO = (SELECT DEPTNO FROM EMP WHERE ENAME='FORD');

30) Display the details of all employees who are joined before 'FORD'?
SQL> SELECT * FROM EMP
WHERE HIREDATE < (SELECT HIREDATE FROM EMP WHERE ENAME = 'FORD')
ORDER BY HIREDATE;
OR
SQL> SELECT A.* FROM EMP A, EMP B
WHERE B.ENAME='FORD' AND B.HIREDATE > A.HIREDATE
ORDER BY A.HIREDATE;

31) Display the names of all the employees who are all getting the salary greater
than the salary of 'SMITH' along with the difference in salary?
SQL> SELECT E.*, SAL - (SELECT SAL FROM EMP WHERE ENAME='SMITH') AS SAL_DIFF
FROM EMP E
WHERE SAL > (SELECT SAL FROM EMP WHERE ENAME='SMITH');
OR
SQL> SELECT A.*, A.SAL AS EMP_SAL, B.SAL AS SMITH_SAL, A.SAL - B.SAL AS DIFF_SAL
FROM EMP A, EMP B
WHERE B.ENAME='SMITH' AND A.SAL>B.SAL;

32) Find the two minimum salaries among table?


SQL> SELECT ROWNUM AS RNO, A.*
FROM (SELECT E.* FROM EMP E ORDER BY E.SAL) A
WHERE ROWNUM <3;

33) Display all the employees reporting to king?


SQL> SELECT A.*, A.MGR AS MGR_EMPNO, B.ENAME AS MGR_ENAME
FROM EMP A, EMP B
WHERE A.MGR=B.EMPNO
AND B.ENAME='KING';

34) Display all the details where department is either ‘SALES’ or ‘RESEARCH’?
SQL> SELECT * FROM EMP
WHERE DEPTNO IN (SELECT DEPTNO FROM DEPT WHERE DNAME IN
('SALES','RESEARCH'));
OR
SQL> SELECT E.*, D.DNAME
FROM EMP E, DEPT D
WHERE E.DEPTNO=D.DEPTNO
AND D.DNAME IN ('SALES','RESEARCH')
ORDER BY D.DNAME;

35) Display 5th highest salary of an EMP?


SQL> SELECT * FROM EMP A WHERE 5 = (SELECT COUNT (DISTINCT SAL)
FROM EMP B
WHERE A.SAL<=B.SAL);
OR
SQL> SELECT * FROM (SELECT DENSE_RANK () OVER (ORDER BY SAL DESC) AS DR, E.*
FROM EMP E)
WHERE DR=5;

36) Display ODD records?


SQL> SELECT * FROM (SELECT ROW_NUMBER () OVER (ORDER BY ROWID) AS RNO, E.*
FROM EMP E)
WHERE MOD (RNO, 2) = 1;
OR
SQL> SELECT * FROM EMP WHERE ROWID IN
(SELECT DECODE (MOD (ROWNUM, 2), 1, ROWID) FROM EMP)
ORDER BY EMPNO;

37) Display all the details of employees whose job is same as that of jones?
SQL> SELECT * FROM EMP
WHERE JOB IN
(SELECT JOB FROM EMP WHERE ENAME='JONES');
OR
SQL> SELECT A.* FROM EMP A, EMP B
WHERE A.JOB=B.JOB
AND B.ENAME='JONES';

38) Display the details of all employees who are getting salary greater than the
salary of ‘ADAMS’?
SQL> SELECT E.*, (SELECT SAL FROM EMP WHERE ENAME='ADAMS') AS ADAM_SAL
FROM EMP E WHERE SAL > (SELECT SAL FROM EMP WHERE ENAME='ADAMS')
ORDER BY SAL;
OR
SQL> SELECT A.*, B.SAL AS ADAM_SAL
FROM EMP A, EMP B
WHERE B.ENAME='ADAMS' AND A.SAL > B.SAL
ORDER BY A.SAL;

39) Display the details of all the employees who are joined after ‘SMITH’ but before
‘MILLER’?
SQL> SELECT * FROM EMP
WHERE HIREDATE > (SELECT HIREDATE FROM EMP WHERE ENAME='SMITH')
AND HIREDATE < (SELECT HIREDATE FROM EMP WHERE ENAME='MILLER')
ORDER BY HIREDATE;
OR
SQL> SELECT A.*, B.HIREDATE SMITH_HIREDATE, C.HIREDATE MILLER_HIREDATE
FROM EMP A, EMP B, EMP C
WHERE B.ENAME='SMITH' AND C.ENAME='MILLER'
AND A.HIREDATE > B.HIREDATE AND A.HIREDATE < C.HIREDATE;

40) Display the details of all employees working in the same department as 'FORD'?
SQL> SELECT * FROM
EMP WHERE DEPTNO = (SELECT DEPTNO FROM EMP WHERE ENAME='FORD');
OR
SQL> SELECT A.*, B.ENAME AS EMP_NAME, B.DEPTNO AS FORD_DEPTNO
FROM EMP A, EMP B
WHERE A.DEPTNO=B.DEPTNO
AND B.ENAME='FORD';

41) Display 1st Record from EMP Table?


SQL→ SELECT * FROM EMP WHERE ROWNUM=1;

42) Display Last Record from EMP Table?


SQL→SELECT * FROM EMP WHERE ROWID = (SELECT Max (ROWID) FROM EMP);

43) Display 1st 3 Records from EMP Table?


SQL→ SELECT ROWNUM, E.* FROM EMP E WHERE ROWNUM <=3;

44) Display Last 3 Records from EMP Table?


SQL→ SELECT * FROM (SELECT ROWNUM, E.* FROM EMP E ORDER BY ROWID DESC)
WHERE ROWNUM <=3;

45) Display 1st 3 Records & Last 3 Records from EMP Table?
SQL→ SELECT ROWNUM, E.* from EMP E WHERE ROWNUM <=3
UNION
SELECT * FROM (SELECT ROWNUM, E.* FROM EMP E ORDER BY ROWID DESC) WHERE
ROWNUM <=3;
46) Display 5th Record from EMP Table?
SQL→SELECT * FROM (SELECT ROWNUM AS RNO, Emp.* FROM EMP) WHERE RNO=5;

47) Display Nth Record from EMP Table?


SQL→ SELECT * FROM (SELECT ROWNUM AS RNO, Emp.* FROM EMP) WHERE
RNO=&N;

48) Display 5th Record to Last Record from EMP Table?


SQL→SELECT * FROM (SELECT ROWNUM AS RNO, Emp.* FROM EMP) WHERE RNO >=5;

49) Display 5th Record to 10th Record from EMP Table?


SQL→ SELECT * FROM (SELECT ROWNUM AS RNO, E.* FROM EMP E) WHERE RNO
BETWEEN 5 AND 10;
OR
SELECT ROWNUM, E.* FROM EMP E WHERE ROWNUM<=10
MINUS
SELECT ROWNUM, E.* FROM EMP E WHERE ROWNUM<=4;

50) Display 2nd, 5th & 9th Record from EMP Table?
SQL→SELECT * FROM (SELECT ROWNUM AS RNO, EMP.* FROM EMP) WHERE RNO IN (2,
5, 9);

51) Display ODD Rows from EMP Table?


SQL→ SELECT * FROM (SELECT ROWNUM AS RNO, EMP.* FROM EMP) WHERE Mod
(RNO, 2) =1;

52) Display EVEN Rows from EMP Table?


SQL→ SELECT * FROM (SELECT ROWNUM AS RNO, EMP.* FROM EMP) WHERE Mod
(RNO, 2) =0;

53) Display 5th Max Sal EMP Table?


SQL→ SELECT * FROM (SELECT DENSE_RANK () Over (ORDER BY Sal DESC) AS RNK,
Emp.* FROM EMP) WHERE
RNK=5;

54) Display Nth Max Sal EMP Table?


SQL→ SELECT * FROM (SELECT DENSE_RANK () Over (ORDER BY Sal DESC) AS RNK,
Emp.* FROM EMP) WHERE
RNK=&N;
55) Display 5th Min Sal EMP Table?
SQL→ SELECT * FROM (SELECT DENSE_RANK () Over (ORDER BY Sal ASC) AS RNK,
Emp.* FROM EMP) WHERE
RNK=5;

56) Display Nth Min Sal EMP Table?


SQL→ SELECT * FROM (SELECT DENSE_RANK () Over (ORDER BY Sal ASC) AS RNK,
Emp.* FROM EMP) WHERE
RNK=&N;

57) Display Top 5 Max Sal EMP Table?


SQL→ SELECT * FROM (SELECT DENSE_RANK () Over (ORDER BY Sal DESC) AS RNK,
Emp.* FROM EMP) WHERE RNK<=5;

58) Display Top Nth Max Sal EMP Table?


SQL→ SELECT * FROM (SELECT DENSE_RANK () Over (ORDER BY Sal DESC) AS RNK,
Emp.* FROM EMP) WHERE RNK <=&N;

59) Display Bottom 5 Min Sal EMP Table?


SQL→ SELECT * FROM (SELECT DENSE_RANK () Over (ORDER BY SAL ASC) AS RNK,
Emp.* FROM EMP) WHERE RNK<=5;

60) Display Bottom Nth Min Sal EMP Table?


SQL→ SELECT * FROM (SELECT DENSE_RANK () Over (ORDER BY SAL ASC) AS RNK,
Emp.* FROM EMP) WHERE RNK<=&N;

61) How can i create an Empty Table Emp1 with Same Structure as EMP?
SQL→ CREATE TABLE Emp1 AS SELECT * FROM EMP WHERE 1=2;

62) How to retrieve 1st half records from EMP Table?


SQL→ SELECT ROWNUM, E.* FROM EMP E WHERE ROWNUM<= (SELECT COUNT (*)/2
FROM EMP);

63) How to retrieve 2nd half records from EMP Table?


SQL→ SELECT ROWNUM, E.* FROM EMP E
MINUS
SELECT ROWNUM, E.* FROM EMP E WHERE ROWNUM<= (SELECT COUNT (*)/2 FROM
EMP);
64) Write a SQL Query to display Half Employee Name in UPPER Case & Other Half in
LOWER CASE?
SQL→ SELECT UPPER (SUBSTR (Ename, 0, 3))||LOWER (SUBSTR (Ename, 3)) FROM
Emp;

65) How will you identify the duplicates on a particular column, e.g. PK Column?
SQL→SELECT COUNT (*), <PK_Column>
FROM <Table_Name>
GROUP BY <PK_Column>;
OR
SQL→ SELECT COUNT (*), <PK_Column>
FROM <Table_Name>
GROUP BY <PK_Column>
HAVING COUNT (*) > 1;

66) How to Delete Duplicate rows from a table?


SQL→ DELETE FROM <Table_Name> A
WHERE ROWID> (SELECT MIN (ROWID) FROM <Table_Name> B WHERE A.ID=B.ID);
Note: ***Remove duplicate Rows***
This query removes rows based on the column names specified in the GROUP BY clause. If
you specify only one column name it will remove all duplicate records for that column. If
you want to delete exact replicas of the same row - use all the column names in the GROUP
BY.
SQL→ DELETE FROM <Table_Name>
WHERE ROWID NOT IN (SELECT MIN (ROWID) FROM <Table_Name> GROUP BY
Column1.., Column2, Column3);

67) Query To Find Max Sal In Every Dept?


SQL→ SELECT * FROM EMP WHERE SAL IN
(SELECT MAX (SAL) FROM EMP GROUP BY DEPTNO)
ORDER BY DEPTNO;

68) Query To Find Last Record In Every Dept?


SQL→ SELECT * FROM EMP WHERE ROWID IN
(SELECT MAX (ROWID) FROM EMP GROUP BY DEPTNO)
ORDER BY DEPTNO;

69) Query To Find Emp reporting to Mgr?


SQL> SELECT E.EMPNO, E.ENAME, M.ENAME AS MGR_NAME, M.EMPNO
FROM EMP E, EMP M
WHERE E.MGR=M.EMPNO;
OR
SQL> SELECT E.EMPNO, E.ENAME, M.ENAME AS MGR_NAME, E.MGR
FROM EMP E LEFT OUTER JOIN EMP M
ON E.MGR=M.EMPNO;
OR
SQL> SELECT E.EMPNO, E.ENAME, M.ENAME AS MGR_NAME, E.MGR
FROM EMP E, EMP M
WHERE E.MGR=M.EMPNO (+);
70) Query To Find All Tables Count Under Particular Schema?
SQL> SELECT TABLE_NAME, NUM_ROWS
FROM USER_TABLES
ORDER BY TABLE_NAME;
SQL> EXEC DBMS_STATS.GATHER_SCHEMA_STATS ('SCOTT');

71) First day of Current Week, i.e. Sunday?


SQL→ SELECT TO_CHAR (TRUNC (SYSDATE, 'DAY'), 'D') AS DAY_IN_NO,
TO_CHAR (TRUNC (SYSDATE,'DAY'), 'DAY') AS DAY_IN_WORDS,
TRUNC (SYSDATE, 'DAY') AS DAY_DATE FROM DUAL;
+91-8956-250-250
14
72) First day of Next Week, i.e. Sunday?
SQL→ SELECT TO_CHAR (TRUNC (SYSDATE, 'DAY'), 'D') AS DAY_IN_NO,
TO_CHAR (TRUNC (SYSDATE,'DAY'), 'DAY') AS DAY_IN_WORDS,
TRUNC (SYSDATE+7, 'DAY') AS DAY_DATE FROM DUAL;

73) First day of Previous Week, i.e. Sunday?


SQL→ SELECT TO_CHAR (TRUNC (SYSDATE, 'DAY'), 'D') AS DAY_IN_NO,
TO_CHAR (TRUNC (SYSDATE,'DAY'), 'DAY') AS DAY_IN_WORDS,
TRUNC (SYSDATE-7, 'DAY') AS DAY_DATE FROM DUAL;

74) First day of Current Month?


SQL→ SELECT TRUNC (SYSDATE,'MM') FROM DUAL;

75) First day of Previous Month?


SQL→ SELECT TRUNC (TRUNC (SYSDATE,'MM')-1, 'MM') FROM DUAL;
SELECT TRUNC (ADD_MONTHS (SYSDATE,-1),'MM') FROM DUAL;

76) First day of Next Month?


SQL→ SELECT TRUNC (LAST_DAY (SYSDATE) +1, 'MM') FROM DUAL;
SELECT TRUNC (ADD_MONTHS (SYSDATE, +1),'MM') FROM DUAL;

77) First day of Current Year?


SQL→SELECT TRUNC (SYSDATE,'YY') FROM DUAL;

78) First day of Previous Year?


SQL→SELECT TRUNC (TRUNC (SYSDATE,'YY')-1, 'YY') FROM DUAL;

79) First day of Next Year?


SQL→SELECT TRUNC (ADD_MONTHS (SYSDATE, 12),'YY') FROM DUAL;
SELECT ADD_MONTHS (TRUNC (SYSDATE, 'YY'), 12) FROM DUAL;
80) First Day of Current Quarter?
SQL→ SELECT TRUNC (SYSDATE, 'Q') FROM DUAL;

81) First Day of Previous Quarter?


SQL→ SELECT TRUNC (ADD_MONTHS (SYSDATE, -3), 'Q') FROM DUAL;
SELECT ADD_MONTHS (TRUNC (SYSDATE, 'Q'),-3) FROM DUAL;

82) First Day of Next Quarter?


SQL→SELECT TRUNC (ADD_MONTHS (SYSDATE, 3), 'Q') FROM DUAL;
SELECT ADD_MONTHS (TRUNC (SYSDATE, 'Q'), 3) FROM DUAL;

83) Last day of Current Week, i.e. Saturday?


SQL→ SELECT TRUNC (SYSDATE, 'DAY') +6 FROM DUAL;

84) Last day of Next Week?


SQL→ SELECT TRUNC (SYSDATE+7, 'DAY') +6 FROM DUAL;

85) Last day of Previous Week?


SQL→SELECT TRUNC (SYSDATE-7, 'DAY') +6 FROM DUAL;

86) Last day of Current Month?


SQL→SELECT LAST_DAY (TRUNC (SYSDATE, 'MM')) FROM DUAL;
SELECT TRUNC (ADD_MONTHS (SYSDATE, 1), 'MM')-1 FROM DUAL;

87) Last day of Previous Month?


SQL→ SELECT TRUNC (SYSDATE, 'MM')-1 FROM DUAL;
SELECT LAST_DAY (TRUNC (SYSDATE, 'MM')-1) FROM DUAL;

88) Last day of Next Month?


SQL→ SELECT LAST_DAY (TRUNC (ADD_MONTHS (SYSDATE, 1),'MM')) FROM DUAL;
SELECT LAST_DAY (TRUNC (LAST_DAY (SYSDATE)+1, 'MM')) FROM DUAL;

89) Last day of Current Year?


SQL→SELECT TRUNC (ADD_MONTHS (SYSDATE, 12),'YY')-1 FROM DUAL;
SELECT LAST_DAY (ADD_MONTHS (TRUNC (SYSDATE, 'YY'), 11)) FROM DUAL;
90) Last day of Previous Year?
SQL→SELECT TRUNC (SYSDATE, 'YY')-1 FROM DUAL;
SELECT ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE,-12),'YY'), 12)-1 FROM DUAL;
91) Last day of Next Year?
SQL→SELECT ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE, 12), 'YY'), 12)-1 FROM
DUAL;

92) Last Day of Current Quarter?


SQL→SELECT ADD_MONTHS (TRUNC (SYSDATE,'Q'), 3)-1 FROM DUAL;
SELECT LAST_DAY (ADD_MONTHS (TRUNC (SYSDATE, 'Q'), 2)) FROM DUAL;

93) Last Day of Previous Quarter?


SQL→ SELECT TRUNC (SYSDATE, 'Q')-1 FROM DUAL;

94) Last Day of Next Quarter?


SQL→ SELECT ADD_MONTHS (ADD_MONTHS (TRUNC (SYSDATE, 'Q'), 3), 3)-1 FROM
DUAL;
SELECT LAST_DAY (ADD_MONTHS (TRUNC (SYSDATE, 'Q'), 5)) FROM DUAL;

95) Get number of days in Current Month?


SQL→ SELECT TO_CHAR (LAST_DAY (SYSDATE),'DD') FROM DUAL;
SELECT CAST (TO_CHAR (LAST_DAY (SYSDATE), 'DD') AS INT) AS
NOS_OF_DAYS_IN_MNTH FROM DUAL;

96) Get number of days left in Current Month?


SQL→SELECT TO_CHAR (LAST_DAY (SYSDATE),'DD') AS LAST_DAY,
TO_CHAR (SYSDATE,'DD') AS CURRENT_DAY, TO_CHAR (LAST_DAY (SYSDATE),'DD') -
TO_CHAR (SYSDATE,'DD') AS DAYS_DIFF
FROM DUAL;
OR
SQL→SELECT LAST_DAY (SYSDATE) AS LAST_DAY, SYSDATE,
LAST_DAY (SYSDATE) - SYSDATE AS DAYS_LEFT
FROM DUAL;
97) Get number of days between two dates?
SQL→ SELECT TO_DATE ('31-JAN-2016','DD-MON-YYYY') - TO_DATE ('1-JAN-
2016','DD-MON-YYYY') AS DAYS_BETWEEN_TWO_DATES FROM DUAL;
OR
SQL→SELECT ROUND (MONTHS_BETWEEN ('31-JAN-2016', '01-JAN-2016')*30, 0)
DAYS_BETWEEN_TWO_DATES FROM DUAL;
OR
SQL→SELECT CEIL (MONTHS_BETWEEN ('31-JAN-2016', '01-JAN-2016')*30)
DAYS_BETWEEN_TWO_DATES FROM DUAL;
OR
SQL→SELECT TRUNC (SYSDATE) - TO_DATE ('1-MAY-2016','DD-MON-YYYY') AS
DAYS_BETWEEN_TWO_DATES FROM DUAL;
98) Display each month Start and End date upto last month of the year?
SQL→SELECT ALL_MONTHS AS START_DATE_MONTH,
TO_CHAR (LAST_DAY (ALL_MONTHS),'DD-MON-YY') AS END_DATE_MONTH
FROM
(SELECT TO_CHAR (ADD_MONTHS ('01-JAN-2016', LEVEL-1),'DD-MON-YY') AS
ALL_MONTHS FROM DUAL CONNECT BY LEVEL <= 12);

99) Get number of seconds passed since today (since 00:00 hr.)?
SQL→SELECT (SYSDATE – TRUNC (SYSDATE)) * 24 * 60 * 60
NOS_OF_SECS_FROM_MORNING FROM DUAL;

100) Get number of seconds left today (till 23:59:59 hr.)?


SQL→ SELECT (TRUNC (SYSDATE+1) - SYSDATE) *24 *60 *60 AS NOS_OF_SECS_LEFT FROM
DUAL;

You might also like