Subqueries To Solve Queries Questions

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

SUBQUERIES TO SOLVE QUERIES

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

1. Which of the following are the types of sub-queries?


Ordered sub-queries
Grouped sub-queries
Sing le row sub-queries
None of the above
Answer: C. 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. Sing le row sub-queries and multi-row sub-queries are the main types of sub-queries
2.Which of the following is true about sub-queries?
T hey execute after the main query executes
T hey execute in parallel to the main query
T he user can execute the main query and then, if wanted, execute the sub-query
T hey execute before the main query executes.
Answer: D. T he sub-query always executes before the execution of the main query.Subqueries are completed
first.T he result of the subquery is used as input for the outer query.
3.Which of the following is true about the result of a sub-query?
T he result of a sub-query is g enerally ig nored when executed.
T he result of a sub-query doesn't g ive a result, it is just helpful in speeding up the main query execution
T he result of a sub-query is used by the main query.
T he result of a sub-query is always NULL
Answer: C. Subqueries are completed first.T he result of the subquery is used as input for the outer query.
4.Which of the following clause is mandatorily used in a sub-query?
SELECT
WHERE
ORDER BY
GROUP BY
Answer: A. A sub-query is just like any other query which has to start with a SELECT clause. T hey are
contained within an outer query.
5. Which of the following is a method for writing a sub-query in a main query?
By using JOINS
By using WHERE clause
By using the GROUP BY clause
By writing a SELECT statement embedded in the clause of another SELECT statement

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');

None of the above


Answer: A. In the option 'A', the inner sub-query g ives the VP's salary as a result to the outer query.
12.What among the following is true about sub-queries?
Sub-queries can be written on either side of a comparison operator
Parenthesis is not mandatory for sub-queries
Sing le-row sub-queries can use multi-row operators but vice versa is not possible
All of the above
Answer: A. Sub queries can be placed on left or rig ht hand side of the comparison operator depending on the
query indentation and usability.
13. What will be the outcome of the following query? (Consider the g iven table structure)
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 ANY (SELECT salary FROM employees);

It executes successfully g iving the desired results


It executes successfully but does not g ive the desired results
It throws an ORA error
It executes successfully and g ives two values for each row obtained in the result set
Answer: C. Multi-row operators cannot be used in sing le-row sub-queries and vice versa.
14.Which of the following is true about sing le-row sub-queries?
T hey g ive one result from the main query
T hey g ive only one row in the result set
T hey return only one row from the inner SELECT statement
T hey g ive multiple rows from the main (outer) query
Answer: C. A sing le-row subquery can return a maximum of one value.
15.What is true about multi-row sub-queries?
T hey can return more than one column as the result of the inner query
T hey return multiple rows in the main query but only a sing le result set in the inner query
T hey return sing le row in the main query but multiple rows in the inner sub-query
T hey return more than one row from the inner SELECT statement
Answer: D. Multi-column sub-queries return more than one column in their result set, multi-row sub-queries
return more than one row from the inner query.
16.What among the following is true about sing le-row sub-queries?
T hey return only one row
T hey use sing le-row operators
Both A and B
None of the above
Answer: C.
17.Which of the following operators cannot be used in a sub-query?
AND
<
>
<>
Answer: A. Sing le-row operators include =, >, <, >=, <=, and <>. Multi-row operators that can be used with
multiple-row subqueries include IN, ALL, ANY, and EXIST S.
Examine the exhibit and answer the questions 18 to 21 that follow.

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);

SELECT job_id, avg(salary)


FROM employees
GROUP BY job_id
HAVING max(avg(salary) in (SELECT max(avg(salary) FROM employees);
SELECT job_id, avg(salary)
FROM employees
GROUP BY job_id
HAVING avg(salary) in (SELECT max(avg(salary) FROM employees GROUP BY job_id);

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);

T he GRO UP BY c lause is not required in the sub-query


A func tion c annot be used in a sub-query SELECT statement
T he sing le row sub-query g ives multiple rec ords
T he use of "=" operator is invalid; an IN operator will work c orrec tly
Answer: C, D. T he GRO UP BY c lause g ives the minimum c ommission_pc t for eac h
department and henc e multiple results are fetc hed to the main query g iving an error.
26.Consider the query g iven below.How many rec ords will be returned as a result of the
above query? (Assuming the no employee with job id XX exists in the c ompany)
SELECT first_name, last_name
FROM employees
WHERE salary = (SELECT salary
FROM employees
WHERE job_id = 'XX');

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

returns more than one row".


28.Whic h of the following are valid multi row operators used for sub-queries?
<=
ANY >=
!=
>=
Answer: B. 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.T he multi row
operators IN, ANY, ALL must be used with sing le row operators as shown in the option B.
Examine the table struc ture as g iven. Consider the query g iven below and answer the
questions 29 to 33 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 first_name, last_name, salary, commission_pct
FROM employees
WHERE salary < ANY (SELECT salary
FROM employees
WHERE department_id = 100)
AND department_id <> 101;

29.What does the ANY operator evaluates to in the above query?


T RUE
FALSE
NULL
0
Answer: A. T he multi row operators return Boolean results. As there are results of salary in
the department 100, it returns T RUE. If there are 0 results, it evaluates to FALSE.
30.What will be the outc ome of the query if we assume that the department 100 has only one
employee?
It exec utes suc c essfully g iving the one result
It exec utes suc c essfully g iving salaries of all the employees
NULL
It throws an O RA error
Answer: D. If the department 100 has one result (sing le row sub-query), the < ANY
operator g ives the error as it is a multi-row operator.
31. What will be the outc ome of the query g iven above if the < ANY operator is replac ed

with = ANY operator?


O rac le will treat eac h value of the salary returned from the sub-query as it does with IN
operator
T here will be no differenc e in the results
T he results will differ
T he exec ution will thrown an O RA error
Answer: A. = ANY operator is equivalent to IN operator.
32.What c an be said about the < ANY operator in the query g iven above?
It g ives the maximum value of salary
It g ives the minimum value of salary
It means it g ives the values that are lesser than the hig hest
None of the above
Answer: C. T he multi row operator < ANY evaluates to the statements "Less than the
maximum" of the subquery. '> 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 <
33.Assume that the < ANY operator is replac ed with the > ANY. What is true about this
operator?
It g ives the maximum salary
It finds only the maximum salary from the sub-query
It g ives more than the minimum salary
It g ives the minimum salary
Answer: C. T he multi row operator > ANY evaluates to the statements "Greater than the
minimum" of the subquery. '> 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 <
34. Examine the g iven table struc ture and c onsider the following query:
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 employee_id, first_name, last_name
FROM employees
WHERE salary IN (SELECT max(salary)
FROM employees
GROUP BY department_id );

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';

SELECT employee_id, first_name, last_name


FROM employees
WHERE salary = (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.

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
FROM employees
WHERE employee_id NOT IN
(SELECT manager_id
FROM employees);

38.What will be the result of the query g iven above?


10
NULL
O RA error
0
Answer: D. O ne of the values in the inner sub-query is NULL (all employees are not
manag ers!)
39.Whic h of the following WHERE c lauses should be added / modified to the above query to
g ive the expec ted results?
WHERE employee_id != (SELECT manager_id FROM employees);
WHERE employee_id IN (SELECT manager_id FROM employees);
WHERE employee_id <>ALL (SELECT manager_id FROM employees);
WHERE employee_id NOT IN (SELECT manager_id
FROM employees
WHERE manager_id is NOT NULL);

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?

A sub-query c an return 0 or more rows


A sub-query c an be used only in the SELECT c lause
Nesting of sub-queries is limited to 2 levels
Group func tions c annot be used in sub-queries
Answer: A. A subquery is a c omplete query nested in the SELECT , FRO M, HAVING, or
WHERE c lause of another query. T he subquery must be enc losed in parentheses and have a
SELECT and a FRO M c lause, at a minimum. A sing le-row subquery c an return a maximum of
one value. Multiple-c olumn subqueries return more than one c olumn to the outer query.
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
FROM employees
WHERE employee_id NOT IN
(SELECT manager_id, hire_date
FROM employees
WHERE manager_id is not null);

T his query returns an error. What is the reason for error?


T he NO T IN operator used is invalid
T he WHERE c lause in the sub-query is inc orrec tly written
T he c olumn in the sub-query SELECT c lause should only be one when there's an
inequality used in the main query
T he sub-query uses the same table as the main query
Answer: C. T he c olumns selec ted in the sub-query should be same as on the other side of
c omparison operator. Any inequality of data type or number of c olumns would result in an
O RA error.
43.A report has to be extrac ted whic h displays all the departments that have one or more
employees assig ned to them. Whic h of the following queries will g ive the required output?
(Consider the table struc ture 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 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)

SELECT employee_id, first_name, last_name, job_id


FROM employees
WHERE job_id = (SELECT job_id FROM employees);

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);

What will be the outc ome of this c hang e?


T he results will be the same
O RA error thrown on exec ution
T he results will differ
T he query will exec ute suc c essfully g iving 0 rows.
Answer: B. T he sub-query g ives more than one result on the g iven c hang e and henc e a multi
row operator should replac e the "=" in the main query g iven above.

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

WHERE salary = (SELECT max (salary) FROM employees)


AND salary BETWEEN losal and hisal;
SELECT first_name, last_name, grade
FROM employees, grade
WHERE salary IN (SELECT max (salary) FROM employees)
AND max(salary) BETWEEN losal and hisal;

Answer: B, C. T he sub-queries c an be written on either side of the operator


49.What is the sub-query in the FRO M c lause of an SQ L statement? (Choose the most
appropriate answer)
Sing le row sub-query
Multi row sub-query
Inline View
Co-related sub-query
Answer: C. If a sub-query appears in the FRO M c lause of the SELECT statements,it forms
an Inline view. O rac le internally c reates a temporary view for the query exec ution.
5 0.What is the maximum number of nesting level allowed in an Inline View type sub-query?
25 5
300
216
Unlimited
Answer: D. As there is no limit on the number of tables whic h c an be joined, there is no limit
on the number of inline view in a query.
5 1.What is true about c o-related sub-queries?
T he tables used in the main query are also used in a c o-related sub-query
T he sub-queries whic h referenc e a c olumn used in the main query are c alled c orelated sub-queries
T he sub-queries whic h are written without parenthesis are c alled c o-related subqueries
T he sub-queries whic h mandatorily use different tables than those used in the main
query are c alled c o-related sub-queries
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 while Unc orrelated subquery exec utes the
subquery first and passes the value to the outer query.
5 2.Whic h of the following statements c annot be parent statements for a sub-query?
SELECT
GRO UP BY
UPDAT E
DELET E
Answer: B. T he rest of the options c an be in the main query (parent query) of a sub-query.
5 3.What is true about a c o-related sub-query?

5 3.What is true about a c o-related sub-query?


It is evaluated only onc e for the parent query
It is evaluated only thric e for the parent query
It is evaluated onc e for eac h row proc essed by the parent sub-query
All of the above
Answer: C. 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.
5 4.Examine the g iven table struc ture. You need to write a query whic h returns the names of
the employees whose salaries exc eed their respec tive department's averag e salary. Whic h
of the following will work? (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 employee_id, first_name, last_name
FROM employees e
WHERE salary > (SELECT avg (salary)
FROM employees
WHERE e.department_id = department_id )
ORDER BY department_id ;
SELECT employee_id, first_name, last_name
FROM employees e
WHERE salary > ANY (SELECT avg(salary)
FROM employees
WHERE e.department_id = department_id )
ORDER BY department_id ;
SELECT employee_id, first_name, last_name
FROM employees e
WHERE salary = (SELECT avg(salary)
FROM employees
WHERE e.department_id = department_id )
ORDER BY department_id ;
SELECT employee_id, first_name, last_name
FROM employees e
WHERE salary < ANY (SELECT avg(salary)
FROM employees
WHERE e.department_id = department_id )
ORDER BY department_id ;

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

DEPART MENT S and EMPLO YEES table?


SELECT sysdate,
(SELECT * FROM departments) dept_count,
(SELECT * FROM employees) emp_count
FROM DUAL;
SELECT sysdate,
(SELECT count(*) FROM departments) dept_count,
(SELECT count(*) FROM employees) emp_count
FROM DUAL
GROUP BY department_id ;
SELECT sysdate,
(SELECT * FROM departments) dept_count,
(SELECT * FROM employees) emp_count
FROM DUAL
GROUP BY employee_id;
SELECT sysdate,
(SELECT count(*) FROM departments) dept_count,
(SELECT count(*) FROM employees) emp_count
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.
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)

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)
SELECT department_name
FROM departments d INNER JOIN employees e
ON (d.employee_id = e.employee_id)
GROUP BY department_name;

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:

SELECT au_id, au_title


FROM audit
WHERE au_details in (SELECT au_details
FROM audit
WHERE au_title like 'S%')
ORDER BY au_title;

63.What will be the outc ome of the query g iven above?


It g ives all AU_ID and AU_T IT LEs starting with the letter 'S%'
It g ives all AU_ID and AU_T IT LEs starting with the letter 'S%' ordered by the titles in
asc ending order
It throws an O RA error
It returns a 0 value
Answer: C. A c olumn with a CLO B, BLO B, NCLO B or an ARRAY c annot be used in a subquery.
SELECT *
FROM employees
WHERE salary BETWEEN (SELECT max(salary)
FROM employees
WHERE department_id = 100)
AND (SELECT min(salary) FROM employees where department_id

= 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
)

SELECT department_id , min(salary)


FROM employees
HAVING max(salary) < ANY
(
select min(salary)
FROM employees
where department_id = 10
)
SELECT department_id , min(salary)
FROM employees
GROUP BY department_id
HAVING min(salary) > ALL
(
select max(salary)
FROM employees
where department_id = 10
)

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

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 < 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
)

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
)

SELECT employee_id, Salary


FROM employees
WHERE salary < ANY
(
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

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 salary
FROM employees E1
WHERE E.job_id < E1.job_id
AND E.salary <= E1.salary
AND job_id = 'SA_REP'
)

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: B. T he NO T EXIST S is the neg ation operator for EXIST S.


75 .You need to find the 3rd maximum salary from the EMPLO YEES table. Whic h of the
following queries will g ive you the required results? (Choose the most appropriate answer)
SELECT *
FROM employees E
WHERE salary = (SELECT count(distinct salary )
FROM employees
WHERE e.salary = salary
);
SELECT *
FROM employees E
WHERE 1 = (SELECT count(distinct salary )
FROM employees
WHERE e.salary < salary
);
SELECT *
FROM employees E

WHERE 2 = (SELECT count(distinct salary )


FROM employees
WHERE e.salary >salary
);
SELECT *
FROM employees E
WHERE 3 = (SELECT count(distinct salary )
FROM employees
WHERE e.salary <= salary
);

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 ORDER BY salary

FROM employees

SELECT salary FROM


(
SELECT rownum as user_sal, salary
BY salary desc)
)
WHERE user_sal=&N ;

desc)

GROUP BY salary )

FROM (SELECT distinct salary

SELECT salary FROM


(
SELECT max(rownum) as user_sal, salary
ORDER BY salary desc)
)
WHERE user_sal=&N ;

FROM employees

FROM (SELECT distinct salary

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);

SELECT employee_id , salary


FROM employees WHERE salary < (SELECT min(salary) FROM employees WHERE department_id=100);
SELECT employee_id
FROM employees
WHERE salary not >= ANY (SELECT salary FROM employees WHERE department_id=100);

None of the above


Answer: A, B.
Q uery 1:
SELECT first_name
FROM employees e join departments d
ON e.department_id = d.department_id
WHERE department_name='ACCOUNTS';

Q uery 2:
SELECT first_name
FROM employees e
WHERE department_id = ANY (SELECT department_id
WHERE department_name='ACCOUNTS');

FROM departments d

What c an be said about the two statements?


Both the queries should g enerate the same result.
Both the queries will throw an error.
If there are two departments with the same name, both the queries will fail.
Both the queries will run suc c essfully even if there is more than one department named
'ACCO UNT S'.
Answer: A, D.
SELECT E.first_name, E.last_name , E.salary
FROM employees E
WHERE E.salary > ALL (SELECT E1.salary
FROM employees E1
WHERE E.department_id =E1.department_id
AND E.department_id = 100);

What will be the outc ome of the above query?


It exec utes suc c essfully and g ives the required results
It exec utes suc c essfully but doesn't g ive the required output
It throws an O RA error on exec ution
It exec utes suc c essfully and g ives the required result when >ALL is replac ed with
>=ALL
Answer: B, D. >ALL will not g ive the required result as there may be two employees with the
same salary and who are the hig hest earners in the department 100
Consider table struc tures as shown in the exhibit and answer the questions 87 to 89 that

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

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: 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);

Answer: B. T he EXIST S operator c an substitute the ANY operator. 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.
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 E.salary
FROM employees E
WHERE E.salary > ANY ( select E1.salary FROM employees E1 where E1.department_id

= 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.

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy