Subconsultas para resolver preguntas de consultas
1. Which of the following are the types of sub-queries?
- Subconsultas ordenadas
- Subconsultas agrupadas
- Subconsultas de una sola fila
- Ninguna de las anteriores
Answer: C. Una subconsulta es una consulta completa anidada en la cláusula SELECT, FROM, HAVING o WHERE de otra consulta. La subconsulta debe estar entre paréntesis y tener una cláusula SELECT y FROM, como mínimo. Las subconsultas de una sola fila y las subconsultas de varias filas son los tipos principales de subconsultas
2.Which of the following is true about sub-queries?
- Se ejecutan después de que se ejecuta la consulta principal.
- Se ejecutan en paralelo a la consulta principal.
- El usuario puede ejecutar la consulta principal y luego, si lo desea, ejecutar la subconsulta
- Se ejecutan antes de que se ejecute la consulta principal.
Answer: D. La subconsulta siempre se ejecuta antes de la ejecución de la consulta principal. Las subconsultas se completan primero. El resultado de la subconsulta se usa como entrada para la consulta externa.
3.Which of the following is true about the result of a sub-query?
- El resultado de una subconsulta generalmente se ignora cuando se ejecuta.
- El resultado de una subconsulta no da un resultado, solo es útil para acelerar la ejecución de la consulta principal
- La consulta principal utiliza el resultado de una subconsulta.
- El resultado de una subconsulta es siempre NULL
Answer: C. Las subconsultas se completan primero y el resultado de la subconsulta se utiliza como entrada para la consulta externa.
4.Which of the following clause is mandatorily used in a sub-query?
- SELECT
- WHERE
- PEDIR POR
- AGRUPAR POR
Answer: A. Una subconsulta es como cualquier otra consulta que debe comenzar con una cláusula SELECT. Están contenidos dentro de una consulta externa.
5. Which of the following is a method for writing a sub-query in a main query?
- Utilizando JOINS
- Utilizando la cláusula WHERE
- Utilizando la cláusula GROUP BY
- Escribiendo una instrucción SELECT incrustada en la cláusula de otra instrucción SELECT
Answer: D. Una subconsulta es una consulta completa anidada en la cláusula SELECT, FROM, HAVING o WHERE de otra consulta. La subconsulta debe estar entre paréntesis y tener una cláusula SELECT y FROM, como mínimo.
6.In the given scenarios, which one would appropriately justify the usage of sub-query?
- Cuando necesitamos sumar valores
- Cuando necesitamos convertir valores de caracteres en valores numéricos o de fecha
- Cuando necesitamos seleccionar filas de una tabla con una condición que depende de los datos de la misma tabla o de una diferente.
- Ninguna de las anteriores
Answer: C.
7.In which of the following clauses can a sub-query be used?
- HAVING
- WHERE
- FROM
- Todas las anteriores
Answer: D. Una subconsulta no es diferente de una consulta normal. Puede hacer uso de todas las cláusulas principales de una instrucción SELECT.
8.Which of the following single-row operators can be used for writing a sub-query?
- >=
- <
- =
- Todas las anteriores
Answer: D. Los operadores de una sola fila incluyen =,>, <,> =, <= y <>.
9.Which of the following multi-row operators can be used with a sub-query?
- IN
- ANY
- ALL
- Todas las anteriores
Answer: D. Las subconsultas de varias filas devuelven más de una fila de resultados. Los operadores que se pueden usar con subconsultas de varias filas incluyen IN, ALL, ANY y EXISTS.
10.What is true about the output obtained from a sub-query?
- Permanece en la caché del búfer
- Permanece dentro de la subconsulta y se puede usar más tarde cuando sea necesario
- Se usa para completar la consulta externa (principal)
- Tanto A como C
Answer: C. Las subconsultas se completan primero y el resultado de la subconsulta se utiliza como entrada para la consulta externa.
11.You need to find the salaries for all the employees who have a higher salary than the Vice President of a company 'ABC'.Which of the following queries will give you the required result? (Consider the table structure as given)
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');
- Ninguna de las anteriores
Answer: A. En la opción 'A', la subconsulta interna da el salario del vicepresidente como resultado de la consulta externa.
12.What among the following is true about sub-queries?
- Las subconsultas se pueden escribir en cualquier lado de un operador de comparación
- Los paréntesis no son obligatorios para las subconsultas
- Las subconsultas de una sola fila pueden utilizar operadores de varias filas, pero no es posible viceversa
- Todas las anteriores
Answer: A. Las subconsultas se pueden colocar en el lado izquierdo o derecho del operador de comparación dependiendo de la sangría y la usabilidad de la consulta.
13. What will be the outcome of the following query? (Consider the given 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);
- Se ejecuta con éxito dando los resultados deseados.
- Se ejecuta con éxito pero no da los resultados deseados.
- Lanza un error ORA
- Se ejecuta con éxito y da dos valores para cada fila obtenida en el conjunto de resultados.
Answer: C. Los operadores de varias filas no se pueden utilizar en subconsultas de una sola fila y viceversa.
14.Which of the following is true about single-row sub-queries?
- Dan un resultado de la consulta principal.
- Dan solo una fila en el conjunto de resultados
- Devuelven solo una fila de la instrucción SELECT interna
- Dan varias filas de la consulta principal (externa)
Answer: C. Una subconsulta de una sola fila puede devolver un máximo de un valor.
15.What is true about multi-row sub-queries?
- Pueden devolver más de una columna como resultado de la consulta interna.
- Devuelven varias filas en la consulta principal, pero solo un conjunto de resultados en la consulta interna
- Devuelven una sola fila en la consulta principal pero varias filas en la subconsulta interna
- Devuelven más de una fila de la instrucción SELECT interna
Answer: D. Las subconsultas de varias columnas devuelven más de una columna en su conjunto de resultados, las subconsultas de varias filas devuelven más de una fila de la consulta interna.
16.What among the following is true about single-row sub-queries?
- Regresan solo una fila
- Utilizan operadores de una sola fila
- Tanto a como B
- Ninguna de las anteriores
Answer: C.
17.Which of the following operators cannot be used in a sub-query?
- AND
- <
- >
- <>
Answer: A. Los operadores de una sola fila incluyen =,>, <,> =, <= y <>. Los operadores de varias filas que se pueden utilizar con subconsultas de varias filas incluyen IN, ALL, ANY y EXISTS.
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 'Jessica Butcher' who is in department 100 and has an employee ID 40. Which of the following queries will be correct?
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' es más apropiado que 'C' porque filtra la identificación del empleado que es única y asegura que la subconsulta devolverá una sola fila. 'C' puede fallar si hay más de un empleado con el mismo nombre y apellido.
19.You need to find out the employees which belong to the department of 'Jessica Butcher' and have salary greater than the salary of 'Jessica Butcher' who has an employee ID of 40. Which 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. Se puede escribir más de una subconsulta en una declaración SQL para agregar más de una condición.
20.Based on the answers for questions 18th and 19th, what type of sub-queries is used by them?
- Subconsulta de una sola fila
- Subconsulta de varias filas
- Tanto a como B
- Subconsulta en línea
Answer: A. Las preguntas 18 y 19 dadas anteriormente demuestran las subconsultas de uso en una instrucción SELECT.
21.Consider two statements about outer and inner queries in context of SQL sub-queries?
yo. Las consultas internas pueden obtener datos de una sola tabla
ii. Las consultas internas pueden obtener datos de más de una tabla.
¿Cuáles de las afirmaciones anteriores son verdaderas?
- (i)
- (ii)
- Tanto (i) como (ii)
- Ni (i) ni (ii)
Answer: B. Las subconsultas pueden obtener datos de más de una tabla.
Examine the table structure 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 outcome 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);
- Se ejecuta con éxito y les da a los empleados que tienen salarios iguales al salario máximo.
- Se ejecuta con éxito pero no da los resultados requeridos.
- Lanza un error cuando se usa una función de grupo en la subconsulta
- Lanza un error ya que una subconsulta de una sola fila debe contener un operador de varias filas
Answer: A. Se puede utilizar una función de grupo dentro de una subconsulta.
23.What will be the outcome 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);
- Se ejecuta con éxito y da los nombres y el salario mínimo superior al departamento 100 de todos los empleados.
- Se ejecuta con éxito y da los sueldos de los empleados en el departamento 100
- Se ejecuta con éxito y da los nombres y salarios mínimos de todos los empleados.
- Lanza un error.
Answer: A. La cláusula HAVING se puede utilizar en subconsultas como se muestra
24.You need to find the job which has a maximum average salary.Which of the following queries will give 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. Las subconsultas pueden hacer uso de funciones de grupo y cláusula HAVING para restringir los grupos.
25.The following query throws an error. Choose the correct reason for the error as given in the options.
SELECT first_name, last_name
FROM employees
WHERE commission_pct = (SELECT min(commission_pct )
FROM employees
GROUP BY department_id);
- La cláusula GROUP BY no es necesaria en la subconsulta
- Una función no se puede utilizar en una instrucción SELECT de subconsulta
- La subconsulta de una sola fila da múltiples registros
- El uso del operador "=" no es válido; un operador IN funcionará correctamente
Answer: C, D. La cláusula GROUP BY da el mínimo de comisión_pct para cada departamento y, por lo tanto, se obtienen varios resultados a la consulta principal que dan un error.
26.Consider the query given below.How many records will be returned as a result of the above query? (Assuming the no employee with job id XX exists in the company)
SELECT first_name, last_name
FROM employees
WHERE salary = (SELECT salary
FROM employees
WHERE job_id = 'XX');
- 1
- NULL
- 0
- La consulta genera un error de ORA porque la subconsulta no es válida.
Answer: C. Dado que no hay ningún empleado con job_id "XX" en la empresa, la subconsulta no devuelve ningún resultado, que cuando se compara con job_id en la consulta principal da un 0.
27.What happens if the WHERE condition in the query given in question 26 is replaced with a new one (WHERE job_id IS NOT NULL)? (Assume the number of records in 'employees' table is 14).
- 1
- 14
- 0
- Error de ORA
Answer: D. La ejecución de la consulta genera la excepción "ORA-01427: la subconsulta de una sola fila devuelve más de una fila".
28.Which of the following are valid multi row operators used for sub-queries?
- <=
- CUALQUIER> =
- !=
- >=
Answer: B. Las subconsultas de varias filas devuelven más de una fila de resultados.Los operadores que se pueden utilizar con subconsultas de varias filas incluyen IN, ALL, ANY y EXISTS.Los operadores de varias filas IN, ANY, ALL deben usarse con operadores de una sola fila como se muestra en la opción B.
Examine the table structure as given. Consider the query given 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?
- TRUE
- FALSE
- NULL
- 0
Answer: A. Los operadores de filas múltiples devuelven resultados booleanos. Como hay resultados de salario en el departamento 100, devuelve VERDADERO. Si hay 0 resultados, se evalúa como FALSO.
30.What will be the outcome of the query if we assume that the department 100 has only one employee?
- Se ejecuta con éxito dando un resultado
- Ejecuta con éxito dando sueldos de todos los empleados
- NULL
- Lanza un error ORA
Answer: D. Si el departamento 100 tiene un resultado (subconsulta de una sola fila), el operador <ANY da el error ya que es un operador de varias filas.
31.What will be the outcome of the query given above if the < ANY operator is replaced with = ANY operator?
- Oracle tratará cada valor del salario devuelto por la subconsulta como lo hace con el operador IN
- No habrá diferencia en los resultados.
- Los resultados diferirán
- La ejecución arrojará un error ORA
Answer: A. = CUALQUIER operador es equivalente al operador IN.
32.What can be said about the < ANY operator in the query given above?
- Da el valor máximo del salario
- Da el valor mínimo del salario
- Significa que da los valores que son menores que los más altos.
- Ninguna de las anteriores
Answer: C. El operador de filas múltiples <ANY evalúa las declaraciones "Menos que el máximo" de la subconsulta. '> ALL' Más que el valor más alto devuelto por la subconsulta. '<ALL' Menor que el valor más bajo devuelto por la subconsulta. '<ANY' Menor que el valor más alto devuelto por la subconsulta. '<ANY' Más que el valor más bajo devuelto por la subconsulta. '= ANY' Igual a cualquier valor devuelto por la subconsulta (igual que IN). La fila "[NO] EXISTE" debe coincidir con un valor de la subconsulta
33.Assume that the < ANY operator is replaced with the > ANY. What is true about this operator?
- Da el salario máximo
- Encuentra solo el salario máximo de la subconsulta
- Da más que el salario mínimo
- Da el salario mínimo
Answer: C. El operador de filas múltiples> ANY evalúa las declaraciones "Mayor que el mínimo" de la subconsulta. '> ALL' Más que el valor más alto devuelto por la subconsulta. '<ALL' Menor que el valor más bajo devuelto por la subconsulta. '<ANY' Menor que el valor más alto devuelto por la subconsulta. '> ANY' Más que el valor más bajo devuelto por la subconsulta. '= ANY' Igual a cualquier valor devuelto por la subconsulta (igual que IN). La fila "[NO] EXISTE" debe coincidir con un valor de la subconsulta
34. Examine the given table structure and consider 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 );
¿Qué cláusula WHERE de las siguientes es equivalente a la dada en la consulta anterior? (Suponga que los salarios son 2500, 3000, 3500,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. Cuando se utiliza el operador IN, Oracle trata los resultados individuales de la subconsulta como se muestra en la opción D.
Examine the structure of the EMPLOYEES table as given 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 which of the employees have a salary less than that of the salary for the job ID 'FIN_ACT'. Which of the following queries will give 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. <TODOS significa menos que el mínimo. '> ALL' Más que el valor más alto devuelto por la subconsulta. '<ALL' Menor que el valor más bajo devuelto por la subconsulta. '<ANY' Menor que el valor más alto devuelto por la subconsulta. '> ANY' Más que el valor más bajo devuelto por la subconsulta. '= ANY' Igual a cualquier valor devuelto por la subconsulta (igual que IN). La fila "[NO] EXISTE" debe coincidir con un valor de la subconsulta
36.What will be the outcome of the above query (the option A in the question above), if the < ALL is replaced with the >ALL?
- Se ejecutará con éxito dando el mismo resultado.
- Lanzará un error ORA
- Se ejecutará correctamente, pero proporcionará los detalles de los empleados que tienen salarios inferiores a todos los empleados con job_id 'FI_ACCOUNTANT'.
- Ninguna de las anteriores
Answer: C. > TODO significa menos que el mínimo. '> ALL' Más que el valor más alto devuelto por la subconsulta. '<ALL' Menor que el valor más bajo devuelto por la subconsulta. '<ANY' Menor que el valor más alto devuelto por la subconsulta. '> ANY' Más que el valor más bajo devuelto por la subconsulta. '= ANY' Igual a cualquier valor devuelto por la subconsulta (igual que IN). La fila "[NO] EXISTE" debe coincidir con un valor de la subconsulta
37.You need to find the salaries for all employees who are not in the department 100. Which of the following queries will give 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 se puede utilizar con los operadores de filas múltiples IN, ANY y ALL.
Examine la estructura de la tabla como se indica. Considere la siguiente consulta y responda las preguntas 38 y 39 que siguen. Debe encontrar los empleados que no tienen un subordinado que les informe. (Suponga que hay 0 resultados esperados)
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 given above?
- 10
- NULL
- Error de ORA
- 0
Answer: D. Uno de los valores en la subconsulta interna es NULL (¡todos los empleados no son gerentes!)
39.Which of the following WHERE clauses should be added / modified to the above query to give the expected 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. Si es probable que la subconsulta tenga valores NULL, no use el operador NOT IN o, si lo usa, modifique la subconsulta con una cláusula adicional WHERE (opción D)
40.What is true about sub-queries in general?
- Las subconsultas deben ejecutarse por separado de las consultas principales
- Las subconsultas se pueden ejecutar a voluntad del usuario, no están relacionadas con la ejecución de la consulta principal
- Las subconsultas equivalen a dos consultas secuenciales en las que la consulta principal utiliza los resultados de la consulta interna.
- Todas las anteriores
Answer: C.
41. Which of the following is true about sub-queries?
- Una subconsulta puede devolver 0 o más filas
- Una subconsulta solo se puede usar en la cláusula SELECT
- El anidamiento de subconsultas está limitado a 2 niveles
- Las funciones de grupo no se pueden utilizar en subconsultas
Answer: A. Una subconsulta es una consulta completa anidada en la cláusula SELECT, FROM, HAVING o WHERE de otra consulta. La subconsulta debe estar entre paréntesis y tener una cláusula SELECT y FROM, como mínimo. Una subconsulta de una sola fila puede devolver un máximo de un valor. Las subconsultas de varias columnas devuelven más de una columna a la consulta externa.
42. Examine the table structure as given.
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)
Considere la siguiente consulta.
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);
Esta consulta devuelve un error. ¿Cuál es el motivo del error?
- El operador NOT IN utilizado no es válido
- La cláusula WHERE en la subconsulta está escrita incorrectamente
- La columna de la cláusula SELECT de la subconsulta solo debe ser una cuando se usa una desigualdad en la consulta principal
- La subconsulta usa la misma tabla que la consulta principal
Answer: C. Las columnas seleccionadas en la subconsulta deben ser las mismas que en el otro lado del operador de comparación. Cualquier desigualdad de tipo de datos o número de columnas resultaría en un error ORA.
43.A report has to be extracted which displays all the departments that have one or more employees assigned to them. Which of the following queries will give the required output? (Consider the table structure as given)
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 Oracle in a single SQL statement?
- 20
- 50
- Unlimited
- 255
Answer: D. Oracle admite el anidamiento de consultas en 255 niveles.
45. What should be the best practice to follow when we know what values we need to pass on to the main query in Oracle queries?
- Usando GROUP BY
- Usar subconsultas
- Utilizando HAVING
- Ninguna de las anteriores
Answer: D. Es posible que las subconsultas den un resultado NULO, lo que da como resultado 0 filas en el resultado principal; por lo tanto, es una buena práctica usarlos solo si sabemos qué valores necesitamos.
Examine the table structure as given. 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. Which of the following WHERE clauses would you add / modify to achieve this result? (Consider the table structure as given
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.
47.Assume that you change the WHERE clause as given in the option A in question 46 as the following.
WHERE job_id = (SELECT job_id FROM employees WHERE employee_id < 210);
¿Cuál será el resultado de este cambio?
- Los resultados serán los mismos
- Error de ORA en ejecución
- Los resultados diferirán
- La consulta se ejecutará con éxito dando 0 filas.
Answer: B. La subconsulta da más de un resultado sobre el cambio dado y, por lo tanto, un operador de filas múltiples debe reemplazar el "=" en la consulta principal dada arriba.
48.Examine the table structures as shown in the exhibit below.
Debe mostrar los nombres de los empleados que tienen el salario más alto. ¿Cuál de las siguientes declaraciones SQL será correcta?
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. Las subconsultas se pueden escribir en cualquier lado del operador
49.What is the sub-query in the FROM clause of an SQL statement? (Choose the most appropriate answer)
- Subconsulta de una sola fila
- Subconsulta de varias filas
- Vista en línea
- Subconsulta co-relacionada
Answer: C. Si aparece una subconsulta en la cláusula FROM de las sentencias SELECT, forma una vista en línea. Oracle crea internamente una vista temporal para la ejecución de la consulta.
50.What is the maximum number of nesting level allowed in an Inline View type sub-query?
- 255
- 300
- 216
- Unlimited
Answer: D. Como no hay límite en el número de tablas que se pueden unir, no hay límite en el número de vistas en línea en una consulta.
51.What is true about co-related sub-queries?
- Las tablas utilizadas en la consulta principal también se utilizan en una subconsulta co-relacionada
- Las subconsultas que hacen referencia a una columna utilizada en la consulta principal se denominan subconsultas co-relacionadas
- Las subconsultas que se escriben sin paréntesis se denominan subconsultas co-relacionadas
- Las subconsultas que utilizan obligatoriamente tablas diferentes a las utilizadas en la consulta principal se denominan subconsultas co-relacionadas
Answer: B. La subconsulta correlacionada hace referencia a una columna en la consulta externa y ejecuta la subconsulta una vez para cada fila en la consulta externa, mientras que la subconsulta no correlacionada ejecuta la subconsulta primero y pasa el valor a la consulta externa.
52.Which of the following statements cannot be parent statements for a sub-query?
- SELECT
- AGRUPAR POR
- UPDATE
- DELETE
Answer: B. El resto de las opciones pueden estar en la consulta principal (consulta principal) de una subconsulta.
53.What is true about a co-related sub-query?
- Se evalúa solo una vez para la consulta principal
- Se evalúa solo tres veces para la consulta principal
- Se evalúa una vez por cada fila procesada por la subconsulta principal
- Todas las anteriores
Answer: C. La subconsulta correlacionada hace referencia a una columna en la consulta externa y ejecuta la subconsulta una vez para cada fila en la consulta externa; y el operador EXISTS se usa para probar si la relación o el enlace está presente.
54.Examine the given table structure. You need to write a query which returns the names of the employees whose salaries exceed their respective department's average salary. Which 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. Aquí se obtiene el ID de departamento, utilizado para evaluar la consulta principal y si el salario en esa fila es mayor que el salario promedio de los departamentos de esa fila, se devuelve ese resultado.
55.Examine the given table structure. Which of the following queries will display duplicate records in a table EMPLOYEES?
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. La subconsulta correlacionada hace referencia a una columna en la consulta externa y ejecuta la subconsulta una vez para cada fila en la consulta externa; y el operador EXISTS se usa para probar si la relación o el enlace está presente. Se puede utilizar para encontrar filas duplicadas en una tabla donde la duplicidad está sujeta a una columna o conjunto de columnas.
Examine the structures for the tables DEPARTMENTS and EMPLOYEES and answer the questions 56 and 57 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)
56.Which of the following queries will display the system date and count of records in the DEPARTMENTS and EMPLOYEES 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. Una subconsulta de una sola fila también se puede anidar en la cláusula SELECT de la consulta externa. En este caso, el valor que devuelve la subconsulta está disponible para cada fila de salida que genera la consulta externa. Normalmente, esta técnica se utiliza para realizar cálculos con un valor producido a partir de una subconsulta.
57.Which of the following queries will tell whether a given employee is a manager 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 58 that follows:
58.Which of the following queries will give you maximum salary of an employee in a particular city?
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. Cuando se utiliza una subconsulta de varias columnas en la cláusula FROM de la consulta externa, crea una tabla temporal a la que se puede hacer referencia con otras cláusulas de la consulta externa. Esta tabla temporal se denomina más formalmente vista en línea. Los resultados de la subconsulta se tratan como cualquier otra tabla en la cláusula FROM. Si la tabla temporal contiene datos agrupados, los subconjuntos agrupados se tratan como filas separadas de datos en una tabla.
Examine the table structures as given 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 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)
Considere la siguiente consulta y responda las preguntas 59 a 62 que siguen.
SELECT department_name
FROM departments d INNER JOIN employees e
ON (d.employee_id = e.employee_id)
GROUP BY department_name;
59.Which of the following queries can replace the above query by using sub-queries giving 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 given above is modified to the following.
(SELECT distinct (department_id ) FROM employees ORDER BY department_id );
¿Cuál será el resultado como resultado de este cambio? (Elija la respuesta más adecuada)
- Ordenará el department_id obtenido de la subconsulta y lo mostrará en orden ascendente
- Lanzará un error ORA ya que la cláusula ORDER BY debe ir acompañada de la cláusula GROUP BY
- Lanzará un error ORA porque una cláusula ORDER BY no se puede usar dentro de una subconsulta
- Se ejecutará con éxito.
Answer: C. Una subconsulta, excepto una en la cláusula FROM, no puede tener una cláusula ORDER BY. Si necesita mostrar la salida en un orden específico, incluya una cláusula ORDER BY como la última cláusula de la consulta externa.
61.Assume that the query given above is modified as the below one.
SELECT department_name
FROM departments
WHERE department_id = ANY (SELECT department_id FROM employees)
ORDER BY department_id desc;
¿Cuál será el resultado como resultado de este cambio? (Elija la respuesta más adecuada)
- Ordenará el department_id obtenido de la subconsulta y lo mostrará en orden ascendente
- Ordenará el department_id obtenido de la subconsulta y lo mostrará en orden descendente
- Lanzará un error ORA porque una cláusula ORDER BY no se puede usar dentro de una subconsulta
- Ninguna de las anteriores
Answer: D. Una subconsulta, excepto una en la cláusula FROM, no puede tener una cláusula ORDER BY. Si necesita mostrar la salida en un orden específico, incluya una cláusula ORDER BY como la última cláusula de la consulta externa.
62.Which of the following can be used to order results in a sub-query?
- PEDIR POR
- HAVING
- AGRUPAR POR
- Todas las anteriores
Answer: C. De forma predeterminada, la cláusula GROUP BY realiza el pedido en una subconsulta.
Examine the exhibit below and answer the questions 63 to 65 that follow:
Considere la siguiente consulta:
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 outcome of the query given above?
- Da todos los AU_ID y AU_TITLE que comienzan con la letra 'S%'
- Da todos los AU_ID y AU_TITLE que comienzan con la letra 'S%' ordenados por los títulos en orden ascendente
- Lanza un error ORA
- Devuelve un valor 0
Answer: C. Una columna con CLOB, BLOB, NCLOB o ARRAY no se puede utilizar en una subconsulta.
64. What will be the outcome of the following query?
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);
Esta consulta devuelve un error. ¿Cuál es el motivo del error?
- Se debe usar una cláusula GROUP BY ya que se usa la función MAX
- Ambas subconsultas no pueden usar el mismo ID de departamento en la misma consulta externa
- El operador BETWEEN no se puede utilizar con una subconsulta
- La cláusula SELECT debe tener columnas mencionadas y no un asterisco (*)
Answer: C. El operador BETWEEN se puede utilizar dentro de una subconsulta pero no con una subconsulta.
65.What is true about using NOT IN when writing queries with sub-queries in them?
- NOT IN ignora todos los valores NULL y proporciona solo los valores NOT NULL
- NOT IN coloca todos los valores NULL al final y da el NOT NULL para que se muestre primero
- NOT IN no debe usarse si se espera un valor NULL en el conjunto de resultados
- NOT IN es solo una negación del operador IN y se puede cambiar sin ninguna advertencia.
Answer: C. SQL maneja los valores NULL de una manera diferente y, por lo tanto, es una buena práctica evitar NOT IN si el conjunto de resultados puede contener un NULL.
Consider the following table structures and answer the questions 66 to 72 that follow:
66. You need to find out the names and IDs of the departments in which the least salary is greater than the highest salary in the department 10. Which of the following queries will give 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 greater than at least one employee in the department 10. Which of the following queries will give 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. Which of the following queries will give 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. Las subconsultas de varias filas devuelven más de una fila de resultados. Los operadores que se pueden utilizar con subconsultas de varias filas incluyen IN, ALL, ANY y EXISTS. Las subconsultas de varias columnas devuelven más de una columna a la consulta externa. Las columnas de datos se pasan a la consulta externa en el mismo orden en que se enumeran en la cláusula SELECT de la subconsulta.
70.You need to find out all the employees who have their manager and department matching with the employee having an Employee ID of 121 or 200. Which of the following queries will give 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. Las subconsultas de varias filas devuelven más de una fila de resultados. Los operadores que se pueden usar con subconsultas de varias filas incluyen IN, ALL, ANY y EXISTS. Las subconsultas de varias columnas devuelven más de una columna a la consulta externa. Las columnas de datos se pasan a la consulta externa en el mismo orden en que se enumeran en la cláusula SELECT de la subconsulta.
71.You need to find the department name of an employee with employee ID 200. Which of the following queries will be correct? (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 highest earning employee with the job ID as 'SA_REP'. Which of the following queries will be correct? (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 EMPLOYEES table structure as shown in the exhibit and answer the questions 73 to 77 that follow:
73.You need to find the job which has at least one employee in it. Which of the following queries will be correct? (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. El operador EXISTS se utiliza para verificar y comparar registros entre consultas. Devuelve un valor BOOLEAN. La subconsulta correlacionada hace referencia a una columna en la consulta externa y ejecuta la subconsulta una vez para cada fila en la consulta externa; y el operador EXISTS se usa para probar si la relación o el enlace está presente. Una subconsulta no correlacionada ejecuta la subconsulta primero y pasa el valor a la consulta externa.
74.You need to find the job which has no employees in it. Which of the following queries will be correct? (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. NOT EXISTS es el operador de negación de EXISTS.
75.You need to find the 3rd maximum salary from the EMPLOYEES table. Which of the following queries will give 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 getting the value of N. Which of the following queries will give you the required results? (Choose the most appropriate answer)
SELECT salary FROM ( SELECT rowid as user_sal FROM (SELECT distinct salary from employees ORDER BY salary desc) ) WHERE user_sal=&N ;
SELECT salary FROM ( SELECT rownum as user_sal FROM (SELECT distinct salary FROM employees GROUP BY salary ) ) WHERE user_sal <= &N ;
SELECT salary FROM ( SELECT rownum as user_sal, salary FROM (SELECT distinct salary FROM employees ORDER BY salary desc) ) WHERE user_sal=&N ;
SELECT salary FROM ( SELECT max(rownum) as user_sal, salary FROM (SELECT distinct salary FROM employees ORDER BY salary desc) ) WHERE user_sal=&N ;
Answer: C. ROWNUM es una pseudocolumna que se utiliza para encontrar los resultados de enésimo orden.
77.What will happen if a value is provided to the &N variable in the above query (option C in question 76) does not match with any row? (Choose the best answer)
- La declaración arrojaría un error ORA
- La declaración devolvería todas las filas de la tabla.
- La declaración devolvería NULL como resultado de salida.
- La declaración no devolvería filas en el resultado.
Answer: D.
78.What is the maximum level up to which Sub-queries can be nested?
- 255
- 100
- 2
- 16
Answer: A.
79.What is true about the EXISTS operator in SQL queries with respect to sub-queries?
- Las columnas seleccionadas en las subconsultas son importantes
- La consulta interna debe devolver filas, cualquier resultado es lo importante, no lo que está SELECCIONADO
- Tanto a como B
- Ni a ni B
Answer: B.
80.What is true about the ANY operator used for sub-queries?
- Devuelve filas que coinciden con todos los valores en una lista / subconsulta
- Devuelve filas que coinciden con los primeros 5 valores en una lista / subconsulta
- Devuelve filas que coinciden con cualquier valor en una lista / subconsulta
- Devuelve el valor 0 cuando todas las filas coinciden en una lista / subconsulta
Answer: C.
81.What is true about the ALL operator used for sub-queries? (Choose the most appropriate answer.)
- Devuelve filas que coinciden con todos los valores en una lista / subconsulta
- Devuelve filas que coinciden solo con algunos valores en una lista / subconsulta
- Devuelve filas solo si todos los valores coinciden en una lista / subconsulta
- Todas las anteriores
Answer: C. '> ALL' Más que el valor más alto devuelto por la subconsulta. '<ALL' Menor que el valor más bajo devuelto por la subconsulta. '<ANY' Menor que el valor más alto devuelto por la subconsulta. '> ANY' Más que el valor más bajo devuelto por la subconsulta. '= ANY' Igual a cualquier valor devuelto por la subconsulta (igual que IN). '[NO] EXISTE' La fila debe coincidir con un valor en la subconsulta.
82.What is true about using sub-queries in INSERT statements in Oracle?
- Se pueden utilizar en la cláusula INSERT sin ninguna restricción.
- Se pueden usar en la cláusula INSERT solo para valores numéricos
- La lista SELECT de una subconsulta debe ser la misma que la lista de columnas de la instrucción INSERT.
- Ninguna de las anteriores
Answer: C.
Examine the table structures as given 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 June, 2013. Which of the following queries will give the required results? (Consider the table structure as given)
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.Which 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);
- Ninguna de las anteriores
Answer: A, B.
85.Consider the following two queries:
Query 1:SELECT first_name
FROM employees e join departments d
ON e.department_id = d.department_id
WHERE department_name='ACCOUNTS';
Query 2:
SELECT first_name
FROM employees e
WHERE department_id = ANY (SELECT department_id FROM departments d
WHERE department_name='ACCOUNTS');
¿Qué se puede decir sobre las dos declaraciones?
- Ambas consultas deberían generar el mismo resultado.
- Ambas consultas arrojarán un error.
- Si hay dos departamentos con el mismo nombre, ambas consultas fallarán.
- Ambas consultas se ejecutarán correctamente incluso si hay más de un departamento llamado 'CUENTAS'.
Answer: A, D.
86.You need to display all the employees who have the highest salary in a department 100. You fire a query as below.
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);
¿Cuál será el resultado de la consulta anterior?
- Se ejecuta con éxito y da los resultados requeridos.
- Se ejecuta con éxito pero no da el resultado requerido
- Lanza un error ORA en ejecución
- Se ejecuta con éxito y da el resultado requerido cuando> TODO se reemplaza con> = TODO
Answer: B, D. > TODOS no darán el resultado requerido ya que puede haber dos empleados con el mismo salario y que sean los que más ganan en el departamento 100
Consider table structures as shown in the exhibit and answer the questions 87 to 89 that follow:
87.You need to fetch the first names (in a reverse alphabetical order) of all the employees in the department ID = 100 and who have the maximum salary in the JOB ID = 'SA_REP'. Which of the following queries will give 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 given above (option C is the correct answer), you need to display all the employees with the JOB ID 'SA_REP' who have the maximum salary in the department 100. Which of the following queries will give 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 = 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: A.
89.Select the query which will give you the maximum salary and maximum comm percentage. The query should also give the maximum comm percentage paid if the highest salaried employee gets the maximum comm percentage.
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. Una subconsulta de una sola fila también se puede anidar en la cláusula SELECT de la consulta externa. En este caso, el valor que devuelve la subconsulta está disponible para cada fila de salida que genera la consulta externa. Normalmente, esta técnica se utiliza para realizar cálculos con un valor producido a partir de una subconsulta.
90.What is true about the sub-queries used in the SELECT clause of an SQL statement?
- Estas subconsultas son las mismas en todos los aspectos que las utilizadas en las cláusulas FROM o WHERE
- Estas subconsultas deben ser obligatoriamente subconsultas de una sola fila
- Podemos usar operadores de filas múltiples al escribir tales subconsultas
- Ninguna de las anteriores
Answer: B.
91.What will be the outcome of the following query? (Consider the table structure as given)
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;
- Da la fecha del sistema y el salario máximo para cada departamento
- Da el salario máximo para todos los departamentos
- Lanza un error ORA
- Se ejecuta con éxito con 0 filas.
Answer: C. No se puede utilizar una subconsulta de varias filas en la cláusula SELECT de una instrucción SQL. Solo se puede anidar una subconsulta de una sola fila en la cláusula SELECT de la consulta externa.
Examine the given table structure. 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);
92.Which of the following queries are equivalent to the above query?
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. La pregunta muestra la cláusula ALL de forma simplificada cuando va seguida de una lista.
93. If in the above query the list (10,20,30) is replaced by a sub-query, which of the following queries will give 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. La pregunta muestra la cláusula ALL de forma simplificada cuando va seguida de una subconsulta
94.With respect to the question 14 above, what among the following will be an equivalent query if ALL has to be replaced with ANY?
SELECT E.salary FROM employees E WHERE NOT EXISTS (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);
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 NOT ( E.salary <= ANY (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100));
Answer: D. El operador NOT usado mientras se usa '<= ANY' se usa para negar los resultados devueltos por la subconsulta
95.With respect to the question 94, if the operator ANY is not to be used, which of the following queries will be correct?
SELECT E.salary FROM employees E WHERE NOT EXISTS (E.salary = ANY (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100);
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);
- Cualquiera a o B
- Ninguna de las anteriores
Answer: B. La subconsulta correlacionada hace referencia a una columna en la consulta externa y ejecuta la subconsulta una vez para cada fila en la consulta externa; y el operador EXISTS se usa para probar si la relación o el enlace está presente. Una subconsulta no correlacionada ejecuta la subconsulta primero y pasa el valor a la consulta externa.
Examine the given table structures. 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. Which 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. La pregunta muestra la cláusula ANY de manera simplificada cuando va seguida de una lista.
97. In the above query, if the list (10, 20, 30) is replaced by a sub-query, which of the following queries will give 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. La pregunta muestra la cláusula ANY de una manera simplificada cuando va seguida de una subconsulta.
98.With respect 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 E1.salary 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 );
SELECT E.salary FROM employees E WHERE IN (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100);
Answer: B. El operador EXISTS puede sustituir al operador CUALQUIER. La subconsulta correlacionada hace referencia a una columna en la consulta externa y ejecuta la subconsulta una vez para cada fila en la consulta externa; y el operador EXISTS se usa para probar si la relación o el enlace está presente.
99.Examine the given table structure. How many rows will get generated if the sub-query mentioned returns 0 rows?
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 hilera
- Sin filas
- Cualquiera a o B
- Ninguna de las anteriores
Answer: B. Si la subconsulta devuelve cero filas, la condición '> CUALQUIER' se evalúa como FALSO, por lo tanto, se devuelve "Sin filas".
100. A subquery must be placed in the outer query's HAVING clause if:
- La consulta interna debe hacer referencia al valor devuelto a la consulta externa.
- El valor devuelto por la consulta interna debe compararse con los datos agrupados en la consulta externa.
- La subconsulta devuelve más de un valor a la consulta externa.
- Ninguna de las anteriores. Las subconsultas no se pueden usar en la cláusula HAVING de la consulta externa.
Answer: B. Una cláusula HAVING se utiliza cuando los resultados de grupo de una consulta deben restringirse en función de alguna condición. Si el resultado de una subconsulta debe compararse con una función de grupo, debe anidar la consulta interna en la cláusula HAVING de la consulta externa.