VVIMP SQL
VVIMP SQL
MULTI-ROW SUB-QUERY
• If, inner query returns more than one output to the outer query, we call it as
Muti-row Sub query.
• We can achieve multi-row sub-query by using ‘ALL’ & ‘ANY’ operator.
1] WAQTD details of an employee who are earning more than all the
‘SALESMAN’.
SELECT *
FROM EMP
WHERE SAL > ALL (SELECT SAL
FROM EMP
WHERE JOB = ‘SALESMAN’);
SELECT ENAME
FROM EMP
WHERE HIREDATE > ALL (SELECT HIREDATE
FROM EMP
WHERE JOB = ‘MANAGER’) AND
SAL > ALL (SELECT SAL
FROM EMP
WHERE JOB = ‘CLERK’);
3] WAQTD name & salary of an employee if they are earning more than at
least a ‘MANAGER’.
SELECT *
FROM EMP
WHERE JOB = ‘CLERK’ AND
HIREDATE < ANY (SELECT HIREDATE
FROM EMP
WHERE JOB = ‘SALESMAN’);
5] WAQTD 3rd record from EMP table. (Conceptual Question)
SELECT *
FROM (SELECT ROWNUM AS SLNO, EMP.*
FROM EMP)
WHERE SLNO = 3;
SELECT *
FROM (SELECT ROWNUM SLNO, EMP.*
FROM EMP
ORDER BY SLNO DESC)
WHERE ROWNUM<=3;
SELECT SAL
FROM (SELECT ROWNUM SLNO, SAL
FROM (SELECT DISTINCT SAL
FROM EMP
ORDER BY SAL ASC))
WHERE SLNO = N;
SELECT *
FROM EMP
WHERE SUBSTR (ENAME, 1, 1) = ‘A’;
SELECT *
FROM EMP
WHERE SUBSTR (JOB, -1, 1) = ‘N’;
11] WAQTD names of an employee whose name starts with character ‘A’ or
‘S’.
SELECT ENAME
FROM EMP
WHERE SUBSTR (ENAME, 1, 1) IN (‘A’, ‘S’);
12] WAQTD details of an employee whose name starts with vowels.
SELECT *
FROM EMP
WHERE SUBSTR (ENAME, 1, 1) IN (‘A’, ‘E’, ‘I’, ‘O’, ‘U’);
13] WAQTD names of an employee along with number of characters they are
having in their name.
16] WAQTD first character & last character of employee name in uppercase
& rest of the characters in lowercase.
(VERY MOST IMP)
SELECT UPPER(SUBSTR(ENAME,1,1)) ||
LOWER(SUBSTR(ENAME,2,LENGTH(ENAME)-2)) ||
UPPER(SUBSTR(ENAME,-1,1))
FROM EMP;
17] WAQTD first half of employee name in uppercase & second half in
lowercase & reverse.
SELECT UPPER(SUBSTR(ENAME,1,2)) ||
REVERSE(LOWER(SUBSTR(ENAME,3,LENGTH(ENAME)-1)))
FROM EMP;
SELECT *
FROM EMP
WHERE TO_CHAR (HIREDATE, ‘DY’) = ‘SAT’;
SELECT *
FROM EMP
WHERE TO_CHAR (HIREDATE, ‘DY’) IN (‘FRI’, ‘SAT’, ‘SUN’);
SELECT *
FROM EMP
WHERE TO_CHAR (HIREDATE, ‘MON’) IN (‘OCT’, ‘NOV’,
‘DEC’);
OR,
SELECT *
FROM EMP
WHERE TO_CHAR (HIREDATE, ‘MM’) IN (10, 11, 12);
21] WAQTD details of an employee if their name having character ‘A’ using
Single Row Function.
SELECT *
FROM EMP
WHERE INSTR (ENAME, ‘A’, 1, 1) > 0;
22] WAQTD details of an employee who is having at least two ‘A’ in his
name using single row function.
SELECT *
FROM EMP
WHERE INSTR (ENAME, ‘A’, 1, 2) > 0;
SELECT E1.DEPTNO,MAX(E1.SAL)
FROM EMP E1, EMP E2
WHERE E1.SAL < (SELECT MAX(SAL)
FROM EMP E2
WHERE E1.DEPTNO = E2.DEPTNO)
GROUP BY E1.DEPTNO;
SELECT *
FROM (SELECT ROWNUM SLNO, EMP.*
FROM EMP)
WHERE SLNO <= (SELECT COUNT(*)/2
FROM EMP);
SELECT *
FROM (SELECT ROWNUM SLNO, EMP.*
FROM EMP)
WHERE SLNO > (SELECT COUNT(*)/2
FROM EMP);