Subqueries To Solve Queries Questions
Subqueries To Solve Queries Questions
Subqueries To Solve Queries Questions
http://www.tuto rialspo int.co m/sql_ce rtificate /subque rie s_to _so lve _que rie s_que stio ns.htm
Co pyrig ht tuto rials po int.co m
Answer: D. A subquery is a complete query nested in the SELECT , FROM, HAVING, or WHERE clause of
another query.T he subquery must be enclosed in parentheses and have a SELECT and a FROM clause, at a
minimum.
6.In the g iven scenarios, which one would appropriately justify the usag e of sub-query?
When we need to sum up values
When we need to convert character values into date or number values
When we need to select rows from a table with a condition that depends on the data from the same or
different table.
None of the above
Answer: C.
7.In which of the following clauses can a sub-query be used?
HAVING
WHERE
FROM
All of the above
Answer: D. A sub-query is not different from a normal query. It can make use of all the primary clauses of a
SELECT statement.
8.Which of the following sing le-row operators can be used for writing a sub-query?
>=
<
=
All of the above
Answer: D. Sing le-row operators include =, >, <, >=, <=, and <>.
9.Which of the following multi-row operators can be used with a sub-query?
IN
ANY
ALL
All of the above
Answer: D. Multiple-row subqueries return more than one row of results.Operators that can be used with
multiple-row subqueries include IN, ALL, ANY, and EXIST S.
10.What is true about the output obtained from a sub-query?
It remains in the buffer cache
It remains inside the sub-query and can be used later when needed
It is used to complete the outer (main) query
Both A and C
Answer: C. Subqueries are completed first.T he result of the subquery is used as input for the outer query.
11.You need to find the salaries for all the employees who have a hig her salary than the Vice President of a
company 'ABC'.Which of the following queries will g ive you the required result? (Consider the table structure as
g iven)
SQL> DESC employees
Name
Null?
Type
----------------------- -------- ---------------EMPLOYEE_ID
NOT NULL NUMBER(6)
FIRST_NAME
VARCHAR2(20)
LAST_NAME
NOT NULL VARCHAR2(25)
EMAIL
NOT NULL VARCHAR2(25)
PHONE_NUMBER
VARCHAR2(20)
HIRE_DATE
NOT NULL DATE
JOB_ID
NOT NULL VARCHAR2(10)
SALARY
NUMBER(8,2)
COMMISSION_PCT
NUMBER(2,2)
MANAGER_ID
NUMBER(6)
DEPARTMENT_ID
NUMBER(4)
SELECT first_name, last_name, salary
FROM employees
WHERE salary > (SELECT salary
FROM employees
WHERE job_id = 'VICE-PRESIDENT');
SELECT first_name, last_name, salary
FROM employees
WHERE salary = (SELECT salary
FROM employees
WHERE job_id = 'VICE-PRESIDENT');
SELECT first_name, last_name, salary
FROM employees
WHERE job_id = 'VICE-PRESIDENT');
18.You need to find out the names of all employees who belong to the same department as
the employee 'J essic a Butc her' who is in department 100 and has an employee ID 40.
Whic h of the following queries will be c orrec t?
SELECT first_name, last_name
FROM employees
WHERE last_name = 'Butcher'
And first_name = 'Jessica';
SELECT first_name, last_name
FROM employees
WHERE department =100;
SELECT first_name, last_name
FROM employees
WHERE department = (SELECT department
FROM employees
WHERE first_name = 'Jessica'
AND last_name = 'Butcher');
SELECT first_name, last_name
FROM employees
WHERE department = (SELECT department
FROM employees
WHERE first_name = 'Jessica'
AND last_name = 'Butcher'
AND department = 100
AND employee_id = 40);
Answer: D. 'D' is more appropriate than 'C' bec ause it filters on employee id whic h is
unique and ensures that the sub-query will return sing le row only. 'C' c an fail if there are
more than one employee with the same first and last name.
19.You need to find out the employees whic h belong to the department of 'J essic a Butc her'
and have salary g reater than the salary of 'J essic a Butc her' who has an employee ID of 40.
Whic h of the following queries will work?
SELECT first_name, last_name
FROM employees
WHERE last_name = 'Butcher'
AND first_name = 'Jessica'
AND salary > 10000;
SELECT first_name, last_name
FROM employees
WHERE department = 100;
SELECT first_name, last_name
FROM employees
WHERE department = (SELECT department
FROM employees
WHERE first_name = 'Jessica'
AND last_name = 'Butcher'
AND employee_id = 40)
AND salary > (SELECT salary
FROM employees
WHERE first_name = 'Jessica'
AND last_name = 'Butcher'
AND employee_id = 40);
SELECT first_name, last_name
FROM employees
WHERE department = (SELECT department
FROM employees
WHERE first_name = 'Jessica'
AND last_name = 'Butcher'
AND department = 100);
Answer: C. More than one sub-query c an be written in one SQ L statement to add more than
one c ondition.
20.Based on the answers for questions 18th and 19th, what type of sub-queries is used by
them?
Sing le row sub-query
Multiple row sub-query
Both A and B
Inline sub-query
Answer: A. T he questions 18th and 19th g iven above demonstrate the usag e sub-queries in
a SELECT statement.
21.Consider two statements about outer and inner queries in c ontext of SQ L sub-queries?
i. T he inner queries c an g et data from only one table
ii. T he inner queries c an g et data from more than one table
Whic h of the above statements are true?
(i)
(ii)
Both (i) and (ii)
Neither (i) nor (ii)
Answer: B. Sub-queries c an fetc h data from more than one table.
Examine the table struc ture as follows and answer the questions 22 to 27 that follow:
SQL> DESC employees
Name
Null?
Type
----------------------- -------- ---------------EMPLOYEE_ID
NOT NULL NUMBER(6)
FIRST_NAME
VARCHAR2(20)
LAST_NAME
NOT NULL VARCHAR2(25)
EMAIL
NOT NULL VARCHAR2(25)
PHONE_NUMBER
VARCHAR2(20)
HIRE_DATE
NOT NULL DATE
JOB_ID
NOT NULL VARCHAR2(10)
SALARY
NUMBER(8,2)
COMMISSION_PCT
NUMBER(2,2)
MANAGER_ID
NUMBER(6)
DEPARTMENT_ID
NUMBER(4)
22.What will be the outc ome of the following query? (Choose the most appropriate answer)
SQL> DESC employees
Name
Null?
Type
----------------------- -------- ---------------EMPLOYEE_ID
NOT NULL NUMBER(6)
FIRST_NAME
VARCHAR2(20)
LAST_NAME
NOT NULL VARCHAR2(25)
EMAIL
NOT NULL VARCHAR2(25)
PHONE_NUMBER
VARCHAR2(20)
HIRE_DATE
NOT NULL DATE
JOB_ID
NOT NULL VARCHAR2(10)
SALARY
NUMBER(8,2)
COMMISSION_PCT
NUMBER(2,2)
MANAGER_ID
NUMBER(6)
DEPARTMENT_ID
NUMBER(4)
SELECT last_name, job_id, salary
FROM employees
WHERE salary = (SELECT max(salary)
FROM employees);
It exec utes suc c essfully and g ives the employees who have salaries equal to the max
salary.
It exec utes suc c essfully but does not g ive the required results
It throws an error as a g roup func tion is used in the sub-query
It throws an error as a sing le row sub-query should c ontain a multi-row operator
Answer: A. A g roup func tion c an be used within a sub-query.
23.What will be the outc ome of the query that follows?
SELECT first_name, last_name, min(salary)
FROM employees
GROUP BY department_id
HAVING MIN(salary) >
(SELECT min(salary)
FROM employees
WHERE department_id = 100);
It exec utes suc c essfully and g ives the names and minimum salary g reater than
department 100 of all employees
It exec utes suc c essfully and g ives the salaries of the employees in department 100
It exec utes suc c essfully and g ives the names and minimum salaries of all the
employees.
It throws an error.
Answer: A. HAVING c lause c an be used in sub-queries as shown
24.You need to find the job whic h has a maximum averag e salary.Whic h of the following
queries will g ive you the required results?
SELECT job_id, avg(salary)
FROM employees
GROUP BY job_id;
SELECT job_id, avg(salary)
FROM employees
GROUP BY job_id
HAVING job_id in (SELECT max(avg(salary) FROM employees);
Answer: D. Sub-queries c an make use of g roup func tions and HAVING c lause to restric t the
g roups.
25 .T he following query throws an error. Choose the c orrec t reason for the error as g iven
in the options.
SELECT first_name, last_name
FROM employees
WHERE commission_pct = (SELECT min(commission_pct )
FROM employees
GROUP BY department_id);
1
NULL
0
T he query raises O RA error bec ause sub-query is invalid.
Answer: C. Sinc e there is no employee with job_id "XX" in the c ompany, the sub-query
returns no result, whic h when equated to job_id in the main query g ives a 0.
27.What happens if the WHERE c ondition in the query g iven in question 26 is replac ed with
a new one (WHERE job_id IS NO T NULL)? (Assume the number of rec ords in 'employees'
table is 14).
1
14
0
O RA error
Answer: D. T he query exec ution raises the exc eption "O RA-01427: sing le-row subquery
Whic h WHERE c lause among the following is equivalent to that g iven in the above query?
(Assume that the salaries are 25 00, 3000, 35 00,4000)
WHERE salary < ANY (SELECT max(salary)
FROM employees
GROUP BY department_id );
WHERE salary < ALL (SELECT max(salary)
FROM employees
GROUP BY department_id );
WHERE salary = (SELECT max(salary)
FROM employees
GROUP BY department_id );
WHERE salary IN (2500,3000,3500,4000);
Answer: D. When the IN operator is used, O rac le treats individual results of the sub-query
as shown in the option D.
Examine the struc ture of the EMPLO YEES table as g iven below and answer the questions
35 to 37 that follow.
SQL> DESC employees
Name
Null?
Type
----------------------- -------- ---------------EMPLOYEE_ID
NOT NULL NUMBER(6)
FIRST_NAME
VARCHAR2(20)
LAST_NAME
NOT NULL VARCHAR2(25)
EMAIL
NOT NULL VARCHAR2(25)
PHONE_NUMBER
VARCHAR2(20)
HIRE_DATE
NOT NULL DATE
JOB_ID
NOT NULL VARCHAR2(10)
SALARY
NUMBER(8,2)
COMMISSION_PCT
NUMBER(2,2)
MANAGER_ID
NUMBER(6)
DEPARTMENT_ID
NUMBER(4)
<
35 . You need to find out whic h of the employees have a salary less than that of the salary for
the job ID 'FIN_ACT '. Whic h of the following queries will g ive you the required output?
SELECT employee_id, first_name, last_name
FROM employees
WHERE salary < ALL
(SELECT salary
FROM employees
WHERE job_id = 'FIN_ACT')
AND job_id <> 'FIN_ACT';
SELECT employee_id, first_name, last_name
FROM employees
WHERE salary > ALL
(SELECT salary
FROM employees
WHERE job_id = 'FIN_ACT')
AND job_id <> 'FIN_ACT';
SELECT employee_id, first_name, last_name
FROM employees
WHERE salary < ANY
(SELECT salary
FROM employees
WHERE job_id = 'FIN_ACT')
AND job_id <> 'FIN_ACT';
Answer: A. < ALL means less than the minimum. '> ALL' More than the hig hest value
returned by the subquery. '< ALL' Less than the lowest value returned by the subquery. '<
ANY' Less than the hig hest value returned by the subquery. '> ANY' More than the lowest
value returned by the subquery. '= ANY' Equal to any value returned by the subquery (same
as IN). '[NO T ] EXIST S' Row must matc h a value in the subquery
36.What will be the outc ome of the above query (the option A in the question above), if the
< ALL is replac ed with the >ALL?
It will exec ute suc c essfully g iving the same result.
It will throw an O RA error
It will exec ute suc c essfully but g ive the employees' details who have salaries lesser
than all the employees with job_id 'FI_ACCO UNT ANT '.
None of the above
Answer: C. >ALL means less than the minimum. '> ALL' More than the hig hest value
returned by the subquery. '< ALL' Less than the lowest value returned by the subquery. '<
ANY' Less than the hig hest value returned by the subquery. '> ANY' More than the lowest
value returned by the subquery. '= ANY' Equal to any value returned by the subquery (same
as IN). '[NO T ] EXIST S' Row must matc h a value in the subquery
37.You need to find the salaries for all employees who are not in the department 100. Whic h
of the following queries will g ive you the required result?
SELECT employee_id, first_name, last_name
FROM employees
WHERE salary !=ALL
(SELECT salary
FROM employees
WHERE department_id = 100)
AND department_id <> 100;
SELECT employee_id, first_name, last_name
FROM employees
WHERE salary NOT IN
(SELECT salary
FROM employees
WHERE department_id = 100)
AND department_id <> 100;
SELECT employee_id, first_name, last_name
FROM employees
WHERE salary NOT ALL
(SELECT salary
FROM employees
WHERE department_id = 100)
AND department_id <> 100;
SELECT employee_id, first_name, last_name
FROM employees
WHERE salary != (SELECT salary
FROM employees
WHERE department_id = 100)
AND department_id <> 100;
Answer: C. NO T c an be used with the multi row operators IN, ANY and ALL.
Answer: B, D. If the sub-query is likely to have NULL values, do not use the NO T IN
operator or if using , modify the sub-query with an additional WHERE c lause (option D)
40.What is true about sub-queries in g eneral?
Sub-queries have to be exec uted separately from the main queries
Sub-queries c an be exec uted at the will of the user, they are not related to the main
query exec ution
Sub-queries are equal to two sequential queries where the results of inner query are
used by the main query
All of the above
Answer: C.
41. Whic h of the following is true about sub-queries?
SELECT department_name
FROM employees
WHERE department_id IN (SELECT distinct (department_id )
FROM employees);
SELECT department_name
FROM employees
WHERE department_id ANY (SELECT distinct (department_id )
FROM employees);
SELECT department_name
FROM employees
WHERE department_id < ANY (SELECT distinct (department_id )
FROM employees);
SELECT department_name
FROM employees
WHERE department_id = ANY (SELECT distinct (department_id )
FROM employees);
Answer: A, D.
44.What is the maximum level of sub-queries allowed in O rac le in a sing le SQ L statement?
20
50
Unlimited
25 5
Answer: D. O rac le supports the Nesting of queries to 25 5 levels.
45 . What should be the best prac tic e to follow when we know what values we need to pass
on to the main query in O rac le queries?
Using GRO UP BY
Using sub-queries
Using HAVING
None of the above
Answer: D. It mig ht bec ome possible that the sub-queries g ive a NULL result, whic h results
in 0 rows in the main result; henc e it is a g ood prac tic e to use them only if we know what
values we need.
Examine the table struc ture as g iven. Consider the following query and answer the
questions 46 and 47 that follow:
SQL> DESC employees
Name
Null?
Type
----------------------- -------- ---------------EMPLOYEE_ID
NOT NULL NUMBER(6)
FIRST_NAME
VARCHAR2(20)
LAST_NAME
NOT NULL VARCHAR2(25)
EMAIL
NOT NULL VARCHAR2(25)
PHONE_NUMBER
VARCHAR2(20)
HIRE_DATE
NOT NULL DATE
JOB_ID
NOT NULL VARCHAR2(10)
SALARY
NUMBER(8,2)
COMMISSION_PCT
NUMBER(2,2)
MANAGER_ID
NUMBER(6)
DEPARTMENT_ID
NUMBER(4)
46.You need to find all the employees whose job ID is the same as that of an employee with
ID as 210. Whic h of the following WHERE c lauses would you add / modify to ac hieve this
result? (Consider the table struc ture as g iven)
WHERE job_id = (SELECT job_id FROM employees WHERE employee_id = 210);
WHERE job_id IN (SELECT job_id FROM employees WHERE employee_id = 210);
WHERE job_id > (SELECT job_id FROM employees WHERE employee_id = 210);
WHERE job_id >= (SELECT job_id FROM employees WHERE employee_id = 210);
Answer: A.
WHERE job_id = (SELECT job_id FROM employees WHERE employee_id < 210);
You need to display the names of the employees who have the hig hest salary. Whic h of the
following SQ L statements will be c orrec t?
SELECT first_name, last_name, grade
FROM employees, grade
WHERE (SELECT max (salary) FROM employees) BETWEEN losal and hisal;
SELECT first_name, last_name, grade
FROM employees, grade
WHERE (SELECT max (salary) FROM employees) BETWEEN losal and hisal
AND salary BETWEEN losal and hisal;
SELECT first_name, last_name, grade
FROM employees, grade
Answer: A. Here the department ID is obtained, used to evaluate the parent query and if the
salary in that row is g reater than the averag e salary of the departments of that row, that
result is returned.
5 5 .Examine the g iven table struc ture. Whic h of the following queries will display duplic ate
rec ords in a table EMPLO YEES?
SQL> DESC employees
Name
Null?
Type
----------------------- -------- ---------------EMPLOYEE_ID
NOT NULL NUMBER(6)
FIRST_NAME
VARCHAR2(20)
LAST_NAME
NOT NULL VARCHAR2(25)
EMAIL
NOT NULL VARCHAR2(25)
PHONE_NUMBER
VARCHAR2(20)
HIRE_DATE
NOT NULL DATE
JOB_ID
NOT NULL VARCHAR2(10)
SALARY
NUMBER(8,2)
COMMISSION_PCT
NUMBER(2,2)
MANAGER_ID
NUMBER(6)
DEPARTMENT_ID
NUMBER(4)
SELECT *
FROM employees E
WHERE exists (SELECT 1 FROM employees E1
WHERE E.employee_id = E1.employee_id);
SELECT *
FROM employees E
WHERE exists (SELECT 1 FROM employees E1
WHERE E.employee_id = E1.employee_id
AND E.ROWID < E1.ROWID);
SELECT *
FROM employees E
WHERE exists (SELECT 1 FROM employees E1
WHERE E.ROWID < E1.ROWID);
SELECT *
FROM employees E
WHERE = ANY (SELECT 1 FROM employees E1
WHERE E.employee_id = E1.employee_id
And E.ROWID < E1.ROWID);
Answer: A. Correlated subquery referenc es a c olumn in the outer query and exec utes the
subquery onc e for every row in the outer query;and the EXIST S operator is used to test
whether the relationship or link is present. It c an be used to find the duplic ate rows in a
table where duplic ity is subjec ted to a c olumn or set of c olumns.
Examine the struc tures for the tables DEPART MENT S and EMPLO YEES and answer the
questions 5 6 and 5 7 that follow.
SQL> DESC employees
Name
Null?
Type
----------------------- -------- ---------------EMPLOYEE_ID
NOT NULL NUMBER(6)
FIRST_NAME
VARCHAR2(20)
LAST_NAME
NOT NULL VARCHAR2(25)
EMAIL
NOT NULL VARCHAR2(25)
PHONE_NUMBER
VARCHAR2(20)
HIRE_DATE
NOT NULL DATE
JOB_ID
NOT NULL VARCHAR2(10)
SALARY
NUMBER(8,2)
COMMISSION_PCT
NUMBER(2,2)
MANAGER_ID
NUMBER(6)
DEPARTMENT_ID
NUMBER(4)
SQL> DESC departments
Name
Null?
Type
----------------------- -------- ---------------DEPARTMENT_ID
NOT NULL NUMBER(4)
DEPARTMENT_NAME NOT NULL VARCHAR2(30)
MANAGER_ID
NUMBER(6)
LOCATION_ID
NUMBER(4)
5 6.Whic h of the following queries will display the system date and c ount of rec ords in the
Answer: D. A sing le-row subquery c an also be nested in the outer query's SELECT c lause.
In this c ase, the value the subquery returns is available for every row of output the outer
query g enerates. T ypic ally, this tec hnique is used to perform c alc ulations with a value
produc ed from a subquery.
5 7.Whic h of the following queries will tell whether a g iven employee is a manag er in a
Company 'XYZ '?
SELECT employee_id, manager_id
FROM employees A
WHERE employee_id ANY (SELECT manager_id from employees B)
ORDER BY manager_id desc;
SELECT employee_id, manager_id
FROM employees A
WHERE employee_id < ALL (SELECT manager_id from employees B)
SELECT employee_id, manager_id
FROM employees A
WHERE employee_id IN (SELECT manager_id from employees B)
ORDER BY manager_id desc;
SELECT employee_id, manager_id
FROM employees A
WHERE employee_id in (SELECT manager_id from employees B)
GROUP BY department_id ;
Answer: C.
Examine the exhibit and answer the question 5 8 that follows:
5 8.Whic h of the following queries will g ive you maximum salary of an employee in a
partic ular c ity?
SELECT max (salary), city
FROM
(SELECT salary, department_id , loc, city
FROM employees natural join departments natural join locations);
SELECT salary, city
FROM
(SELECT salary, department_id , loc, city
FROM employees natural join departments natural join locations);
SELECT max (salary), city
FROM
(SELECT salary, department_id , loc, city
FROM employees natural join departments natural join locations)
GROUP BY city;
SELECT max (avg(salary)), city
FROM
(SELECT salary, department_id , loc, city
FROM employees natural join departments natural join locations);
Answer: C. When a multiple-c olumn subquery is used in the outer query's FRO M c lause, it
c reates a temporary table that c an be referenc ed by other c lauses of the outer query. T his
temporary table is more formally c alled an inline view. T he subquery's results are treated
like any other table in the FRO M c lause. If the temporary table c ontains g rouped data, the
g rouped subsets are treated as separate rows of data in a table.
Examine the table struc tures as g iven below.
SQL> DESC employees
Name
Null?
Type
----------------------- -------- ---------------EMPLOYEE_ID
NOT NULL NUMBER(6)
FIRST_NAME
VARCHAR2(20)
LAST_NAME
NOT NULL VARCHAR2(25)
EMAIL
NOT NULL VARCHAR2(25)
PHONE_NUMBER
VARCHAR2(20)
HIRE_DATE
NOT NULL DATE
JOB_ID
NOT NULL VARCHAR2(10)
SALARY
NUMBER(8,2)
COMMISSION_PCT
NUMBER(2,2)
MANAGER_ID
DEPARTMENT_ID
NUMBER(6)
NUMBER(4)
5 9.Whic h of the following queries c an replac e the above query by using sub-queries g iving
the same result?
SELECT department_name
FROM departments
WHERE department_id = ANY (SELECT department_id
FROM employees);
SELECT department_name
FROM departments
WHERE department_id IN (SELECT distinct(department_id ) FROM employees);
SELECT department_name
FROM departments
WHERE department_id = (SELECT distinct(department_id ) FROM employees);
SELECT department_name
FROM departments
WHERE department_id ANY (SELECT distinct(department_id ) FROM employees);
Answer: A, B.
60.Assume that the sub-query as shown in the query g iven above is modified to the
following .
(SELECT distinct (department_id ) FROM employees ORDER BY department_id );
What will be the outc ome as a result of this c hang e? (Choose the most appropriate answer)
It will order the department_id fetc hed from the sub-query and display them in
asc ending order
It will throw an O RA error as the O RDER BY c lause should be ac c ompanied by the
GRO UP BY c lause
It will throw an O RA error bec ause an O RDER BY c lause c annot be used inside a subquery
It will exec ute suc c essfully.
Answer: C. A subquery, exc ept one in the FRO M c lause, c an't have an O RDER BY c lause.If
you need to display output in a spec ific order, inc lude an O RDER BY c lause as the outer
query's last c lause.
61.Assume that the query g iven above is modified as the below one.
SELECT department_name
FROM departments
WHERE department_id = ANY (SELECT department_id
ORDER BY department_id desc;
FROM employees)
What will be the outc ome as a result of this c hang e? (Choose the most appropriate answer)
It will order the department_id fetc hed from the sub-query and display them in
asc ending order
It will order the department_id fetc hed from the sub-query and display them in
desc ending order
It will throw an O RA error bec ause an O RDER BY c lause c annot be used inside a subquery
None of the above
Answer: D. A subquery, exc ept one in the FRO M c lause, c an't have an O RDER BY c lause.If
you need to display output in a spec ific order, inc lude an O RDER BY c lause as the outer
query's last c lause.
62.Whic h of the following c an be used to order results in a sub-query?
O RDER BY
HAVING
GRO UP BY
All of the above
Answer: C. By default, the GRO UP BY c lause performs ordering in a sub-query.
Examine the exhibit below and answer the questions 63 to 65 that follow:
= 100);
T his query returns an error. What is the reason for the error?
A GRO UP BY c lause should be used as the func tion MAX is used
Both the sub-queries c annot use the same department ID in the same outer query
BET WEEN operator c annot be used with a sub-query
SELECT c lause should have c olumns mentioned and not a asterix (*)
Answer: C. T he BET WEEN operator c an be used within a sub-query but not with a subquery.
65 .What is true about using NO T IN when writing queries with sub-queries in them?
NO T IN ig nores all the NULL values and g ives only the NO T NULL values
NO T IN puts all the NULL values at the last and g ives the NO T NULL to be displayed
first
NO T IN should be not be used if a NULL value is expec ted in the result set
NO T IN is just a neg ation of the operator IN and c an be c hang ed without any c aveat.
Answer: C. SQ L handles NULL values in a different way and henc e it is a g ood prac tic e to
avoid NO T IN if the result set mig ht c ontain a NULL.
Consider the following table struc tures and answer the questions 66 to 72 that follow:
66. You need to find out the names and IDs of the departments in whic h the least salary is
g reater than the hig hest salary in the department 10. Whic h of the following queries will
g ive the required result?
SELECT department_id , min(salary)
FROM employees
GROUP BY department_id
HAVING min(salary) >
(
select max(salary)
FROM employees
where department_id = 10
)
SELECT department_id , min(salary)
FROM employees
GROUP BY department_id
HAVING min(salary) > ANY
(
select max(salary)
FROM employees
)
Answer: A.
67.Write a query to find the employees whose salary is equal to the salary of at least one
employee in department of id 10. (Choose the best answer)
SELECT employee_id, Salary
FROM employees
WHERE salary in
(
SELECT salary
FROM employees
where department_id = 10
)
SELECT employee_id, Salary
FROM employees
WHERE salary =ANY
(
SELECT salary
FROM employees
where department_id = 10
)
SELECT employee_id, Salary
FROM employees
WHERE salary ALL
(
SELECT salary
FROM employees
where department_id = 10
)
SELECT employee_id, Salary
FROM employees
WHERE salary < ANY
(
SELECT salary
FROM employees
where department_id = 10
)
Answer: A, B.
68.You need to find out all the employees who have salary g reater than at least one employee
in the department 10. Whic h of the following queries will g ive you the required output?
SELECT employee_id, Salary
FROM employees
WHERE salary >= ANY
(
SELECT salary
FROM employees
where department_id
)
= 10
Answer: B.
69.You need to find out all the employees who have salary lesser than the salary of all the
employees in the department 10. Whic h of the following queries will g ive you the required
output?
SELECT employee_id, Salary
FROM employees
WHERE salary > ALL
(
SELECT salary
FROM employees
where department_id = 10
)
SELECT employee_id, Salary
FROM employees
WHERE salary =ALL
(
SELECT salary
FROM employees
where department_id = 10
)
SELECT employee_id, Salary
FROM employees
WHERE salary < ALL
(
SELECT salary
FROM employees
where department_id = 10
)
Answer: C. Multiple-row subqueries return more than one row of results. O perators that
c an be used with multiple-row subqueries inc lude IN, ALL, ANY, and EXIST S.Multiplec olumn subqueries return more than one c olumn to the outer query. T he c olumns of data
are passed to the outer query in the same order in whic h they're listed in the subquery's
SELECT c lause.
70.You need to find out all the employees who have their manag er and department matc hing
with the employee having an Employee ID of 121 or 200. Whic h of the following queries will
g ive you the required output?
SELECT employee_id, manager_id,department_id
FROM employees
WHERE (manager_id,department_id ) = ANY
(
select manager_id,
department_id
FROM employees
where employee_id in (121,200)
)
SELECT employee_id, manager_id,department_id
FROM employees
WHERE (manager_id,department_id ) < ANY
(
select manager_id,
department_id
FROM employees
where employee_id in (121,200)
)
SELECT employee_id, manager_id,department_id
FROM employees
WHERE (manager_id,department_id ) > ANY
(
select manager_id,
department_id
FROM employees
where employee_id in (121,200)
)
SELECT employee_id, manager_id,department_id
FROM employees
WHERE (manager_id,department_id ) in
(
select manager_id,
department_id
FROM employees
where employee_id in (121,200)
)
Answer: A, D. Multiple-row subqueries return more than one row of results. O perators that
c an be used with multiple-row subqueries inc lude IN, ALL, ANY, and EXIST S. Multiplec olumn subqueries return more than one c olumn to the outer query. T he c olumns of data
are passed to the outer query in the same order in whic h they're listed in the subquery's
SELECT c lause.
71.You need to find the department name of an employee with employee ID 200. Whic h of
the following queries will be c orrec t? (Choose the most appropriate answer)
SELECT employee_id, first_name, last_name,department_id ,
(SELECT department_name
FROM departments d, employees E
WHERE d.department_id = e.department_id
And employee_id = 200
)
FROM employees e
SELECT employee_id, first_name, last_name,department_id ,
(SELECT department_ID
FROM departments d
WHERE d.department_id = department_id
)
FROM employees e
WHERE employee_id = 200;
SELECT employee_id, first_name, last_name,department_id ,
(SELECT department_name
FROM departments d
WHERE d.department_id = e.department_id
And employee_id = 200
)
FROM employees e
SELECT employee_id, first_name, last_name,department_id ,
(SELECT department_name
FROM departments d,employee E
WHERE d.department_id = e.department_id
)
FROM employees e
Answer: C.
72.You need to find the hig hest earning employee with the job ID as 'SA_REP'. Whic h of the
following queries will be c orrec t? (Choose the most appropriate answer)
SELECT job_id, employee_id, Salary
FROM employees e
WHERE job_id =
(
SELECT distinct salary
FROM employees E1
WHERE E.job_id = E1.job_id
AND E.salary <= E1.salary
AND job_id = 'SA_REP'
SELECT department_id , employee_id, Salary
FROM employees E
WHERE 1 =
(
SELECT count(distinct salary)
FROM employees E1
WHERE E.job_id = E1.job_id
AND E.salary <= E1.salary
AND job_id = 'SA_REP'
)
SELECT department_id , employee_id, Salary
FROM employees E
WHERE 0 =
(
SELECT count(distinct salary)
FROM employees E1
Answer: B.
Consider the EMPLO YEES table struc ture as shown in the exhibit and answer the questions
73 to 77 that follow:
73.You need to find the job whic h has at least one employee in it. Whic h of the following
queries will be c orrec t? (Choose the most appropriate answer)
SELECT employee_id, Job_id
FROM employees E
WHERE exists
(
SELECT 1
FROM employees E1
WHERE E.job_id = E1.job_id )
SELECT employee_id, Job_id
FROM employees E
WHERE exists
(
SELECT *
FROM employees E1
WHERE E.job_id = E1.job_id )
SELECT employee_id, Job_id
FROM employees E
WHERE not exists
(
SELECT *
FROM employees E1
WHERE E.job_id = E1.job_id )
SELECT employee_id, Job_id
FROM employees E
WHERE exists
(
SELECT 1
FROM employees E1
WHERE E.job_id < E1.job_id )
Answer: A. T he EXIST S operator is used to c hec k and matc h rec ords between queries. It
returns a BO O LEAN value. Correlated subquery referenc es a c olumn in the outer query
and exec utes the subquery onc e for every row in the outer query;and the EXIST S operator
is used to test whether the relationship or link is present. An Unc orrelated subquery
exec utes the subquery first and passes the value to the outer query.
74.You need to find the job whic h has no employees in it. Whic h of the following queries will
be c orrec t? (Choose the most appropriate answer)
SELECT employee_id, Job_id
FROM employees E
WHERE exists
(
SELECT *
FROM employees E1
WHERE E.job_id = E1.job_id )
SELECT employee_id, Job_id
FROM employees E
WHERE not exists
(
SELECT 1
FROM employees E1
WHERE E.job_id = E1.job_id )
SELECT employee_id, Job_id
FROM employees E
WHERE not exists
(
SELECT *
FROM employees E1
WHERE E.job_id = E1.job_id )
SELECT employee_id, Job_id
FROM employees E
WHERE exists
(
SELECT 1
FROM employees E1
WHERE E.job_id < E1.job_id )
Answer: D.
76. You need to find the maximum salary by using the user input for g etting the value of N.
Whic h of the following queries will g ive you the required results? (Choose the most
appropriate answer)
SELECT salary FROM
(
SELECT rowid as user_sal
FROM (SELECT distinct salary
)
WHERE user_sal=&N ;
SELECT salary FROM
(
SELECT rownum as user_sal
FROM (SELECT distinct salary
)
WHERE user_sal <= &N ;
FROM employees
desc)
GROUP BY salary )
FROM employees
ORDER
FROM employees
Answer: C. RO WNUM is a pseudo c olumn used for finding the nth order results.
77.What will happen if a value is provided to the &N variable in the above query (option C in
question 76) does not matc h with any row? (Choose the best answer)
T he statement would throw an O RA error
T he statement would return all the rows in the table
T he statement would return NULL as the output result.
T he statement would return no rows in the result.
Answer: D.
78.What is the maximum level up to whic h Sub-queries c an be nested?
25 5
100
2
16
Answer: D.
79.What is true about the EXIST S operator in SQ L queries with respec t to sub-queries?
T he c olumns selec ted in the sub-queries are important
T he inner query's should return rows, any result is what is important, not what is
SELECT ED
Both A and B
Neither A nor B
Answer: B.
80.What is true about the ANY operator used for sub-queries?
Returns rows that matc h all the values in a list/sub-query
Returns rows that matc h the first 5 values in a list/sub-query
Returns rows that matc h any value in a list/sub-query
Returns the value 0 when all the rows matc h in a list/sub-query
Answer: C.
81.What is true about the ALL operator used for sub-queries? (Choose the most
appropriate answer.)
Returns rows that matc h all the values in a list/sub-query
Returns rows that matc h only some values in a list/sub-query
Returns rows only if all the values matc h in a list/sub-query
All of the above
Answer: C. '> ALL' More than the hig hest value returned by the subquery. '< ALL' Less than
the lowest value returned by the subquery. '< ANY' Less than the hig hest value returned by
the subquery. '> ANY' More than the lowest value returned by the subquery. '= ANY' Equal
to any value returned by the subquery (same as IN). '[NO T ] EXIST S' Row must matc h a
value in the subquery.
82.What is true about using sub-queries in INSERT statements in O rac le?
T hey c an be used in the INSERT c lause without any restric tion
T hey c an be used in the INSERT c lause only for Numeric values
T he SELECT list of a sub-query should be the same as the c olumn list of the INSERT
statement.
None of the above
Answer: C.
Examine the table struc tures as g iven below and answer the questions 83 to 86 that follow.
SQL> DESC employees
Name
Null?
Type
----------------------- -------- ---------------EMPLOYEE_ID
NOT NULL NUMBER(6)
FIRST_NAME
VARCHAR2(20)
LAST_NAME
NOT NULL VARCHAR2(25)
EMAIL
NOT NULL VARCHAR2(25)
PHONE_NUMBER
VARCHAR2(20)
HIRE_DATE
NOT NULL DATE
JOB_ID
NOT NULL VARCHAR2(10)
SALARY
NUMBER(8,2)
COMMISSION_PCT
NUMBER(2,2)
MANAGER_ID
NUMBER(6)
DEPARTMENT_ID
NUMBER(4)
SQL> DESC departments
Name
Null?
Type
----------------------- -------- ---------------DEPARTMENT_ID
NOT NULL NUMBER(4)
DEPARTMENT_NAME NOT NULL VARCHAR2(30)
MANAGER_ID
NUMBER(6)
LOCATION_ID
NUMBER(4)
83.You need to find the details of all employees who were hired for the job ID 'SA_REP' in
the month of J une, 2013. Whic h of the following queries will g ive the required results?
(Consider the table struc ture as g iven)
SELECT first_name
FROM employees
WHERE employee_id =
( SELECT employee_id
FROM employees
WHERE to_char(hiredate, 'MM/YYYY')= '02/1981'
AND job_id = 'SA_REP'
);
SELECT first_name
FROM employees
WHERE employee_id = ANY
( SELECT employee_id
FROM employees
WHERE to_char(hiredate, 'MM/YYYY')= '02/1981'
AND job_id = 'SA_REP'
);
SELECT first_name
FROM employees
WHERE employee_id ANY
( SELECT employee_id
FROM employees
WHERE to_char(hiredate, 'MM/YYYY')= '02/1981'
AND job_id = 'SA_REP'
);
SELECT first_name
FROM employees
WHERE employee_id exists
( SELECT employee_id
FROM employees
WHERE to_char(hiredate, 'MM/YYYY')= '02/1981'
AND job_id = 'SA_REP'
);
Answer: B.
84.Whic h of the following statements are equivalent?
SELECT employee_id , salary
FROM employees
WHERE salary < ALL (SELECT salary FROM employees WHERE department_id=100);
Q uery 2:
SELECT first_name
FROM employees e
WHERE department_id = ANY (SELECT department_id
WHERE department_name='ACCOUNTS');
FROM departments d
follow:
87.You need to fetc h the first names (in a reverse alphabetic al order) of all the employees in
the department ID = 100 and who have the maximum salary in the J O B ID = 'SA_REP'.
Whic h of the following queries will g ive the required output? (Choose the most appropriate
output)
SELECT E.first_name, job_id , salary
FROM employees E
WHERE salary =
(SELECT max(salary)
FROM employees E1
WHERE E1.department_id = 100
GROUP BY job_id )
AND job_id = 'SA_REP'
ORDER BY first_name;
SELECT E.first_name, job_id , salary
FROM employees E
WHERE salary in
(SELECT max(salary)
FROM employees E1
where E1.department_id = 100)
ORDER BY first_name;
SELECT E.first_name, job_id , salary
FROM employees E
WHERE salary IN
(SELECT max(salary)
FROM employees E1
where job_id = 'SA_REP'
GROUP BY job_id )
AND WHERE E.department_id = 100
ORDER BY first_name desc;
SELECT E.first_name, job_id , salary
FROM employees E
WHERE salary IN
(SELECT max(salary)
FROM employees E1
WHERE E1.department_id = 100
GROUP BY job_id )
ORDER BY first_name ;
Answer: C.
88.In the queries g iven above (option C is the c orrec t answer), you need to display all the
employees with the J O B ID 'SA_REP' who have the maximum salary in the department 100.
Whic h of the following queries will g ive the required output?
SELECT E.first_name, job_id , salary
FROM employees E
WHERE salary IN
(SELECT max(salary)
FROM employees E1
WHERE E1.department_id
GROUP BY job_id )
AND job_id = 'SA_REP'
ORDER BY first_name;
= 100
Answer: A.
89.Selec t the query whic h will g ive you the maximum salary and maximum c omm
perc entag e. T he query should also g ive the maximum c omm perc entag e paid if the hig hest
salaried employee g ets the maximum c omm perc entag e.
SELECT employee_id, max(salary), max(commission_pct )
FROM employees E
GROUP BY salary, commission_pct ;
SELECT employee_id, max(salary), max(commission_pct )
FROM employees E
GROUP BY salary;
SELECT employee_id, max(salary)
FROM employees E
GROUP BY salary, commission_pct
HAVING max(commission_pct ) = 100;
SELECT employee_id,
(SELECT max(salary) FROM employees) * (SELECT max(commission_pct ) FROM employees)
FROM DUAL;
Answer: D. A sing le-row subquery c an also be nested in the outer query's SELECT c lause.
In this c ase, the value the subquery returns is available for every row of output the outer
query g enerates. T ypic ally, this tec hnique is used to perform c alc ulations with a value
produc ed from a subquery.
90.What is true about the sub-queries used in the SELECT c lause of an SQ L statement?
T hese sub-queries are the same in all aspec ts as those used in the FRO M or WHERE
c lauses
T hese sub-queries have to mandatorily be sing le row sub-queries
We c an use multi row operators when writing suc h sub-queries
None of the above
Answer: B.
SQL> DESC employees
Name
Null?
Type
----------------------- -------- ---------------EMPLOYEE_ID
NOT NULL NUMBER(6)
FIRST_NAME
VARCHAR2(20)
LAST_NAME
NOT NULL VARCHAR2(25)
EMAIL
NOT NULL VARCHAR2(25)
PHONE_NUMBER
VARCHAR2(20)
HIRE_DATE
NOT NULL DATE
JOB_ID
NOT NULL VARCHAR2(10)
SALARY
NUMBER(8,2)
COMMISSION_PCT
NUMBER(2,2)
MANAGER_ID
NUMBER(6)
DEPARTMENT_ID
NUMBER(4)
SELECT sysdate,
(SELECT max(salary) FROM employees GROUP BY department_id )
FROM DUAL;
It g ives the system date and the maximum salary for eac h department
It g ives the maximum salary for all the departments
It throws an O RA error
It exec utes suc c essfully with 0 rows
Answer: C. A Multi row sub-query c annot be used in the SELECT c lause of an SQ L
statement. O nly a sing le-row subquery c an be nested in the outer query's SELECT c lause.
Examine the g iven table struc ture. Consider the following query and answer the questions
92 to 95 that follow:
SQL> DESC employees
Name
Null?
Type
----------------------- -------- ---------------EMPLOYEE_ID
NOT NULL NUMBER(6)
FIRST_NAME
VARCHAR2(20)
LAST_NAME
NOT NULL VARCHAR2(25)
EMAIL
NOT NULL VARCHAR2(25)
PHONE_NUMBER
VARCHAR2(20)
HIRE_DATE
NOT NULL DATE
JOB_ID
NOT NULL VARCHAR2(10)
SALARY
NUMBER(8,2)
COMMISSION_PCT
NUMBER(2,2)
MANAGER_ID
NUMBER(6)
DEPARTMENT_ID
NUMBER(4)
SELECT salary
FROM employees
WHERE salary > ALL (10, 20, 30);
SELECT salary
FROM employees
WHERE salary >10 or salary > 20 and salary >30;
SELECT salary
FROM employees
WHERE salary <10 and salary < 20 and salary <30;
SELECT salary
FROM employees
WHERE salary >10 and salary > 20 and salary >30;
SELECT salary
FROM employees
WHERE salary >10 and salary > 20 or salary < 30;
Answer: C. T he question shows the ALL c lause in a simplified manner when it is followed by
a list.
93. If in the above query the list (10,20,30) is replac ed by a sub-query, whic h of the
following queries will g ive the required output for the department number 100?
SELECT E.salary
FROM employees E
WHERE E.salary > (SELECT E1.salary
FROM employees E1
WHERE E1.department_id = 100);
SELECT E.salary
FROM employees E
WHERE E.salary >ALL (SELECT E1.salary
FROM employees E1
WHERE E1.department_id = 100);
SELECT E.salary
FROM employees E
WHERE E.salary = (SELECT E1.salary
FROM employees E1
WHERE E1.department_id = 100);
SELECT E.salary
FROM employees E
WHERE E.salary >= (SELECT E1.salary
FROM employees E1
WHERE E1.department_id = 100);
Answer: B. T he question shows the ALL c lause in a simplified manner when it is followed by
a sub-query
94.With respec t to the question 14 above, what among the following will be an equivalent
query if ALL has to be replac ed with ANY?
SELECT E.salary
FROM employees E
WHERE NOT EXISTS (E.salary =ANY (SELECT
FROM employees E1
WHERE E1.department_id = 100);
SELECT E.salary
FROM employees E
WHERE E.salary >ANY (SELECT E1.salary
FROM employees E1
WHERE E1.department_id = 100);
SELECT E.salary
FROM employees E
WHERE E.salary =ANY (SELECT E1.salary
FROM employees E1
WHERE E1.department_id = 100);
E1.salary
SELECT E.salary
FROM employees E
WHERE NOT ( E.salary <= ANY (SELECT
FROM employees E1
WHERE E1.department_id = 100));
E1.salary
Answer: D. T he NO T operator used while using '<= ANY' is used for neg ation of the results
returned by the sub-query
95 .With respec t to the question 94, if the operator ANY is not to be used, whic h of the
following queries will be c orrec t?
SELECT E.salary
FROM employees E
WHERE NOT EXISTS (E.salary = ANY (SELECT
FROM employees E1
WHERE E1.department_id = 100);
E1.salary
SELECT E.salary
FROM employees E
WHERE NOT EXISTS (SELECT E1.salary
FROM employees E1
WHERE E1.department_id = 100
And E.salary <= E1.salary);
Either A or B
None of the above
Answer: B. Correlated subquery referenc es a c olumn in the outer query and exec utes the
subquery onc e for every row in the outer query;and the EXIST S operator is used to test
whether the relationship or link is present. An Unc orrelated subquery exec utes the
subquery first and passes the value to the outer query.
Examine the g iven table struc tures. Consider the following query and answer the questions
96 to 98 that follow:
SQL> DESC employees
Name
Null?
Type
----------------------- -------- ---------------EMPLOYEE_ID
NOT NULL NUMBER(6)
FIRST_NAME
VARCHAR2(20)
LAST_NAME
NOT NULL VARCHAR2(25)
EMAIL
NOT NULL VARCHAR2(25)
PHONE_NUMBER
VARCHAR2(20)
HIRE_DATE
NOT NULL DATE
JOB_ID
NOT NULL VARCHAR2(10)
SALARY
NUMBER(8,2)
COMMISSION_PCT
NUMBER(2,2)
MANAGER_ID
NUMBER(6)
DEPARTMENT_ID
NUMBER(4)
SELECT salary
FROM employees
WHERE salary > ANY (10, 20, 30);
96. Whic h of the following queries are equivalent to the above query?
SELECT salary
FROM employees
WHERE salary >10 or salary > 20 and or >30;
SELECT salary
FROM employees
WHERE salary <10 and salary < 20 and salary <30;
SELECT salary
FROM employees
WHERE salary >10 and salary > 20 or salary >30;
SELECT salary
FROM employees
WHERE salary >10 and salary > 20 or salary < 30;
Answer: A. T he question shows the ANY c lause in a simplified manner when it is followed by
a list.
97. In the above query, if the list (10, 20, 30) is replac ed by a sub-query, whic h of the
following queries will g ive the required output for the department number 100?
SELECT E.salary
FROM employees E
WHERE E.salary > (SELECT E1.salary
FROM employees E1
WHERE E1.department_id = 100);
SELECT E.salary
FROM employees E
WHERE E.salary >ANY (SELECT E1.salary
FROM employees E1
WHERE E1.department_id = 100);
SELECT E.salary
FROM employees E
WHERE E.salary = (SELECT E1.salary
FROM employees E1
WHERE E1.department_id = 100);
SELECT E.salary
FROM employees E
WHERE E.salary >= (SELECT E1.salary
FROM employees E1
WHERE E1.department_id = 100);
Answer: B. T he question shows the ANY c lause in a simplified manner when it is followed by
a sub-query
98.With respec t to the question 97 above, what among the following will be an equivalent
query if ANY is removed?
SELECT E.salary
FROM employees E
WHERE NOT EXISTS (E.salary =ANY (SELECT
FROM employees E1
WHERE E1.department_id = 100);
SELECT E.salary
FROM employees E
WHERE EXISTS (SELECT E1.salary
FROM employees E1
WHERE E1.department_id = 100
And E.salary >E1.salary);
SELECT E.salary
FROM employees E
WHERE EXISTS (SELECT E1.salary
FROM employees E1
WHERE E1.department_id = 100
);
E1.salary
SELECT E.salary
FROM employees E
WHERE IN (SELECT E1.salary
FROM employees E1
WHERE E1.department_id = 100);
= 100);
1 row
No rows
Either A or B
None of the above
Answer: B. If the sub-query returns zero rows, the '> ANY' c ondition evaluates to FALSE,
henc e "No rows" are returned.
T he inner query needs to referenc e the value returned to the outer query.
T he value returned by the inner query is to be c ompared to g rouped data in the outer
query.
T he subquery returns more than one value to the outer query.
None of the above. Subqueries c an't be used in the outer query's HAVING c lause.
Answer: B. A HAVING c lause is used when the g roup results of a query need to be
restric ted based on some c ondition. If a subquery's result must be c ompared with a g roup
func tion, you must nest the inner query in the outer query's HAVING c lause.