Subconsultas para resolver questões de consultas

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

  1. Subconsultas ordenadas
  2. Subconsultas agrupadas
  3. Subconsultas de uma única linha
  4. Nenhuma das acima

Answer: C. Uma subconsulta é uma consulta completa aninhada na cláusula SELECT, FROM, HAVING ou WHERE de outra consulta. A subconsulta deve ser colocada entre parênteses e ter um SELECT e uma cláusula FROM, no mínimo. Subconsultas de uma única linha e subconsultas de várias linhas são os principais tipos de subconsultas

2.Which of the following is true about sub-queries?

  1. Eles são executados após a consulta principal ser executada
  2. Eles são executados em paralelo à consulta principal
  3. O usuário pode executar a consulta principal e, se desejar, executar a subconsulta
  4. Eles são executados antes da execução da consulta principal.

Answer: D. A subconsulta sempre é executada antes da execução da consulta principal. As subconsultas são concluídas primeiro. O resultado da subconsulta é usado como entrada para a consulta externa.

3.Which of the following is true about the result of a sub-query?

  1. O resultado de uma subconsulta geralmente é ignorado quando executado.
  2. O resultado de uma subconsulta não fornece um resultado, é apenas útil para acelerar a execução da consulta principal
  3. O resultado de uma subconsulta é usado pela consulta principal.
  4. O resultado de uma subconsulta é sempre NULL

Answer: C. As subconsultas são concluídas primeiro. O resultado da subconsulta é usado como entrada para a consulta externa.

4.Which of the following clause is mandatorily used in a sub-query?

  1. SELECT
  2. WHERE
  3. ORDENAR POR
  4. GRUPO POR

Answer: A. Uma subconsulta é como qualquer outra consulta que deve começar com uma cláusula SELECT. Eles estão contidos em uma consulta externa.

5. Which of the following is a method for writing a sub-query in a main query?

  1. Usando JOINS
  2. Usando a cláusula WHERE
  3. Usando a cláusula GROUP BY
  4. Escrevendo uma instrução SELECT embutida na cláusula de outra instrução SELECT

Answer: D. Uma subconsulta é uma consulta completa aninhada na cláusula SELECT, FROM, HAVING ou WHERE de outra consulta. A subconsulta deve ser colocada entre parênteses e ter um SELECT e uma cláusula FROM, no mínimo.

6.In the given scenarios, which one would appropriately justify the usage of sub-query?

  1. Quando precisamos somar valores
  2. Quando precisamos converter valores de caracteres em valores de data ou numéricos
  3. Quando precisamos selecionar linhas de uma tabela com uma condição que depende dos dados da mesma tabela ou de uma tabela diferente.
  4. Nenhuma das acima

Answer: C.

7.In which of the following clauses can a sub-query be used?

  1. HAVING
  2. WHERE
  3. FROM
  4. Tudo acima

Answer: D. Uma subconsulta não é diferente de uma consulta normal. Ele pode fazer uso de todas as cláusulas primárias de uma instrução SELECT.

8.Which of the following single-row operators can be used for writing a sub-query?

  1. >=
  2. <
  3. =
  4. Tudo acima

Answer: D. Operadores de linha única incluem =,>, <,> =, <= e <>.

9.Which of the following multi-row operators can be used with a sub-query?

  1. IN
  2. ANY
  3. ALL
  4. Tudo acima

Answer: D. Subconsultas de várias linhas retornam mais de uma linha de resultados. Os operadores que podem ser usados ​​com subconsultas de várias linhas incluem IN, ALL, ANY e EXISTS.

10.What is true about the output obtained from a sub-query?

  1. Permanece no cache do buffer
  2. Ele permanece dentro da subconsulta e pode ser usado posteriormente quando necessário
  3. É usado para completar a consulta externa (principal)
  4. Ambos A e C

Answer: C. As subconsultas são concluídas primeiro. O resultado da subconsulta é usado como entrada para a 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)
  1. SELECT first_name, last_name, salary
    FROM employees 
    WHERE salary > (SELECT salary
    FROM employees 
    WHERE job_id = 'VICE-PRESIDENT');
  2. SELECT first_name, last_name, salary
    FROM employees 
    WHERE salary = (SELECT salary
    FROM employees 
    WHERE job_id = 'VICE-PRESIDENT');
  3. SELECT first_name, last_name, salary
    FROM employees 
    WHERE job_id = 'VICE-PRESIDENT');
  4. Nenhuma das acima

Answer: A. Na opção 'A', a subconsulta interna fornece o salário do VP como resultado da consulta externa.

12.What among the following is true about sub-queries?

  1. As subconsultas podem ser escritas em qualquer lado de um operador de comparação
  2. Parênteses não é obrigatório para subconsultas
  3. Subconsultas de uma única linha podem usar operadores de várias linhas, mas vice-versa não é possível
  4. Tudo acima

Answer: A. As subconsultas podem ser colocadas no lado esquerdo ou direito do operador de comparação, dependendo do recuo da consulta e da usabilidade.

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);
  1. É executado com sucesso dando os resultados desejados
  2. É executado com sucesso, mas não dá os resultados desejados
  3. Ele lança um erro ORA
  4. Ele é executado com sucesso e fornece dois valores para cada linha obtida no conjunto de resultados

Answer: C. Operadores de várias linhas não podem ser usados ​​em subconsultas de uma única linha e vice-versa.

14.Which of the following is true about single-row sub-queries?

  1. Eles fornecem um resultado da consulta principal
  2. Eles fornecem apenas uma linha no conjunto de resultados
  3. Eles retornam apenas uma linha da instrução SELECT interna
  4. Eles fornecem várias linhas da consulta principal (externa)

Answer: C. Uma subconsulta de uma única linha pode retornar no máximo um valor.

15.What is true about multi-row sub-queries?

  1. Eles podem retornar mais de uma coluna como resultado da consulta interna
  2. Eles retornam várias linhas na consulta principal, mas apenas um único conjunto de resultados na consulta interna
  3. Eles retornam uma única linha na consulta principal, mas várias linhas na subconsulta interna
  4. Eles retornam mais de uma linha da instrução SELECT interna

Answer: D. Subconsultas com várias colunas retornam mais de uma coluna em seu conjunto de resultados, subconsultas com várias linhas retornam mais de uma linha da consulta interna.

16.What among the following is true about single-row sub-queries?

  1. Eles retornam apenas uma linha
  2. Eles usam operadores de linha única
  3. Ambos a e B
  4. Nenhuma das acima

Answer: C.

17.Which of the following operators cannot be used in a sub-query?

  1. AND
  2. <
  3. >
  4. <>

Answer: A. Operadores de linha única incluem =,>, <,> =, <= e <>. Operadores de várias linhas que podem ser usados ​​com subconsultas de várias linhas incluem IN, ALL, ANY e 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?

  1. SELECT first_name, last_name
    FROM employees
    WHERE last_name = 'Butcher'
    And first_name = 'Jessica';
  2. SELECT first_name, last_name
    FROM employees
    WHERE department =100;
  3. SELECT first_name, last_name
    FROM employees
    WHERE department  = (SELECT department
    FROM employees
    WHERE first_name = 'Jessica'
    AND last_name = 'Butcher');
  4. 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' é mais apropriado do que 'C' porque filtra o ID do funcionário que é único e garante que a subconsulta retornará apenas uma linha. 'C' pode falhar se houver mais de um funcionário com o mesmo nome e sobrenome.

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?

  1. SELECT first_name, last_name
    FROM employees
    WHERE last_name = 'Butcher'
    AND first_name = 'Jessica'
    AND salary > 10000;
  2. SELECT first_name, last_name
    FROM employees
    WHERE department = 100;
  3. 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);
  4. 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. Mais de uma subconsulta pode ser escrita em uma instrução SQL para adicionar mais de uma condição.

20.Based on the answers for questions 18th and 19th, what type of sub-queries is used by them?

  1. Subconsulta de linha única
  2. Subconsulta de várias linhas
  3. Ambos a e B
  4. Subconsulta inline

Answer: A. As questões 18 e 19 fornecidas acima demonstram as subconsultas de uso em uma instrução SELECT.

21.Consider two statements about outer and inner queries in context of SQL sub-queries?

Eu. As consultas internas podem obter dados de apenas uma tabela

ii. As consultas internas podem obter dados de mais de uma tabela

Quais das afirmações acima são verdadeiras?

  1. (i)
  2. (ii)
  3. Ambos (i) e (ii)
  4. Nem (i) nem (ii)

Answer: B. As subconsultas podem buscar dados de mais de uma tabela.

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);
  1. É executado com sucesso e dá aos funcionários que têm salários iguais ao salário máximo.
  2. É executado com sucesso, mas não fornece os resultados necessários
  3. Ele lança um erro quando uma função de grupo é usada na subconsulta
  4. Ele gera um erro, pois uma subconsulta de uma única linha deve conter um operador de várias linhas

Answer: A. Uma função de grupo pode ser usada em uma 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);
  1. É executado com sucesso e fornece os nomes e o salário mínimo maior que o departamento 100 de todos os funcionários
  2. É executado com sucesso e dá os salários dos funcionários no departamento 100
  3. É executado com sucesso e dá os nomes e salários mínimos de todos os funcionários.
  4. Isso gera um erro.

Answer: A. A cláusula HAVING pode ser usada em subconsultas, conforme mostrado

24.You need to find the job which has a maximum average salary.Which of the following queries will give you the required results?

  1. SELECT job_id, avg(salary)
    FROM employees
    GROUP BY job_id;
  2. SELECT job_id, avg(salary)
    FROM employees
    GROUP BY job_id
    HAVING job_id in (SELECT max(avg(salary) FROM employees);
  3. SELECT job_id, avg(salary)
    FROM employees
    GROUP BY job_id
    HAVING max(avg(salary) in (SELECT max(avg(salary) FROM employees);
  4. 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. As subconsultas podem fazer uso de funções de grupo e cláusula HAVING para restringir os 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);
  1. A cláusula GROUP BY não é necessária na subconsulta
  2. Uma função não pode ser usada em uma instrução SELECT de subconsulta
  3. A subconsulta de uma única linha fornece vários registros
  4. O uso do operador "=" é inválido; um operador IN funcionará corretamente

Answer: C, D. A cláusula GROUP BY fornece o mínimo comissão_pct para cada departamento e, portanto, vários resultados são obtidos para a consulta principal, apresentando um erro.

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. 1
  2. NULL
  3. 0
  4. A consulta gera um erro ORA porque a subconsulta é inválida.

Answer: C. Como não há nenhum funcionário com job_id "XX" na empresa, a subconsulta não retorna nenhum resultado, que quando igualado a job_id na consulta principal resulta em 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. 1
  2. 14
  3. 0
  4. Erro ORA

Answer: D. A execução da consulta levanta a exceção "ORA-01427: subconsulta de linha única retorna mais de uma linha".

28.Which of the following are valid multi row operators used for sub-queries?

  1. <=
  2. QUALQUER> =
  3. !=
  4. >=

Answer: B. As subconsultas de várias linhas retornam mais de uma linha de resultados. Os operadores que podem ser usados ​​com as subconsultas de várias linhas incluem IN, ALL, ANY e EXISTS. Os operadores de várias linhas IN, ANY, ALL devem ser usados ​​com operadores de linha única, conforme mostrado na opção 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?

  1. TRUE
  2. FALSE
  3. NULL
  4. 0

Answer: A. Os operadores de várias linhas retornam resultados booleanos. Como há resultados de salário no departamento 100, ele retorna TRUE. Se houver 0 resultados, será avaliado como FALSO.

30.What will be the outcome of the query if we assume that the department 100 has only one employee?

  1. É executado com sucesso, dando o único resultado
  2. Executa com sucesso dando salários a todos os funcionários
  3. NULL
  4. Ele lança um erro ORA

Answer: D. Se o departamento 100 tiver um resultado (subconsulta de linha única), o operador <ANY fornece o erro, pois é um operador de várias linhas.

31.What will be the outcome of the query given above if the < ANY operator is replaced with = ANY operator?

  1. A Oracle tratará cada valor do salário retornado da subconsulta como faz com o operador IN
  2. Não haverá diferença nos resultados
  3. Os resultados serão diferentes
  4. A execução lançará um erro ORA

Answer: A. = ANY operador é equivalente ao operador IN.

32.What can be said about the < ANY operator in the query given above?

  1. Dá o valor máximo do salário
  2. Dá o valor mínimo do salário
  3. Isso significa que dá os valores que são menores do que os mais altos
  4. Nenhuma das acima

Answer: C. O operador de várias linhas <ANY avalia as declarações "Menor que o máximo" da subconsulta. '> ALL' Mais que o maior valor retornado pela subconsulta. '<ALL' Menor que o menor valor retornado pela subconsulta. '<QUALQUER' Menor que o maior valor retornado pela subconsulta. '<QUALQUER' Mais do que o menor valor retornado pela subconsulta. '= ANY' Igual a qualquer valor retornado pela subconsulta (igual a IN). A linha '[NOT] EXISTS' deve corresponder a um valor na subconsulta

33.Assume that the < ANY operator is replaced with the > ANY. What is true about this operator?

  1. Dá o salário máximo
  2. Ele encontra apenas o salário máximo da subconsulta
  3. Dá mais que o salário mínimo
  4. Dá o salário mínimo

Answer: C. O operador de várias linhas> ANY avalia as declarações "Maior que o mínimo" da subconsulta. '> ALL' Mais que o maior valor retornado pela subconsulta. '<ALL' Menor que o menor valor retornado pela subconsulta. '<QUALQUER' Menor que o maior valor retornado pela subconsulta. '> QUALQUER' Mais do que o menor valor retornado pela subconsulta. '= ANY' Igual a qualquer valor retornado pela subconsulta (igual a IN). A linha '[NOT] EXISTS' deve corresponder a um valor na 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 );

Qual cláusula WHERE entre as seguintes é equivalente à fornecida na consulta acima? (Suponha que os salários sejam 2.500, 3.000, 3.500.4000)

  1. WHERE salary < ANY (SELECT max(salary)
    			FROM employees
    			GROUP BY department_id );
  2. WHERE salary < ALL (SELECT max(salary)
    			FROM employees
    			GROUP BY department_id );
  3. WHERE salary = (SELECT max(salary)
    			FROM employees
    			GROUP BY department_id );
  4. WHERE salary IN (2500,3000,3500,4000);

Answer: D. Quando o operador IN é usado, o Oracle trata os resultados individuais da subconsulta conforme mostrado na opção 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?

  1. 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';
  2. 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';
  3. 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';
  4. 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 significa menos do que o mínimo. '> ALL' Mais que o maior valor retornado pela subconsulta. '<ALL' Menor que o menor valor retornado pela subconsulta. '<QUALQUER' Menor que o maior valor retornado pela subconsulta. '> QUALQUER' Mais do que o menor valor retornado pela subconsulta. '= ANY' Igual a qualquer valor retornado pela subconsulta (igual a IN). A linha '[NOT] EXISTS' deve corresponder a um valor na 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?

  1. Ele será executado com sucesso, dando o mesmo resultado.
  2. Ele lançará um erro ORA
  3. Ele será executado com sucesso, mas fornecerá os detalhes dos funcionários que têm salários menores do que todos os funcionários com job_id 'FI_ACCOUNTANT'.
  4. Nenhuma das acima

Answer: C. > ALL significa menos do que o mínimo. '> ALL' Mais que o maior valor retornado pela subconsulta. '<ALL' Menor que o menor valor retornado pela subconsulta. '<QUALQUER' Menor que o maior valor retornado pela subconsulta. '> QUALQUER' Mais do que o menor valor retornado pela subconsulta. '= ANY' Igual a qualquer valor retornado pela subconsulta (igual a IN). A linha '[NOT] EXISTS' deve corresponder a um valor na 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?

  1. SELECT employee_id, first_name, last_name
    FROM employees
    WHERE salary !=ALL 
    		(SELECT salary
    		FROM employees
    		WHERE department_id  = 100)
    		AND department_id  <> 100;
  2. 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;
  3. 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;
  4. 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. NOT pode ser usado com os operadores de várias linhas IN, ANY e ALL.

Examine a estrutura da tabela conforme fornecida. Considere a seguinte consulta e responda às perguntas 38 e 39 que se seguem. Você precisa encontrar os funcionários que não têm subordinados subordinados a eles. (Suponha que haja 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?

  1. 10
  2. NULL
  3. Erro ORA
  4. 0

Answer: D. Um dos valores na subconsulta interna é NULL (todos os funcionários não são gerentes!)

39.Which of the following WHERE clauses should be added / modified to the above query to give the expected results?

  1. WHERE employee_id != (SELECT manager_id FROM employees);
  2. WHERE employee_id IN (SELECT manager_id FROM employees);
  3. WHERE employee_id <>ALL (SELECT manager_id FROM employees);
  4. WHERE employee_id NOT IN (SELECT manager_id
    			FROM employees
    			WHERE manager_id is NOT NULL);

Answer: B, D. Se a subconsulta tiver valores NULL, não use o operador NOT IN ou, se estiver usando, modifique a subconsulta com uma cláusula WHERE adicional (opção D)

40.What is true about sub-queries in general?

  1. As subconsultas devem ser executadas separadamente das consultas principais
  2. As subconsultas podem ser executadas de acordo com a vontade do usuário, não estão relacionadas à execução da consulta principal
  3. As subconsultas são iguais a duas consultas sequenciais onde os resultados da consulta interna são usados ​​pela consulta principal
  4. Tudo acima

Answer: C.

41. Which of the following is true about sub-queries?

  1. Uma subconsulta pode retornar 0 ou mais linhas
  2. Uma subconsulta pode ser usada apenas na cláusula SELECT
  3. O aninhamento de subconsultas é limitado a 2 níveis
  4. As funções de grupo não podem ser usadas em sub-consultas

Answer: A. Uma subconsulta é uma consulta completa aninhada na cláusula SELECT, FROM, HAVING ou WHERE de outra consulta. A subconsulta deve ser colocada entre parênteses e ter uma cláusula SELECT e uma cláusula FROM, no mínimo. Uma subconsulta de uma única linha pode retornar no máximo um valor. Subconsultas de várias colunas retornam mais de uma coluna para a 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 a seguinte 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 retorna um erro. Qual é o motivo do erro?

  1. O operador NOT IN usado é inválido
  2. A cláusula WHERE na subconsulta foi escrita incorretamente
  3. A coluna na cláusula SELECT da subconsulta deve ser apenas uma quando houver uma desigualdade usada na consulta principal
  4. A subconsulta usa a mesma tabela da consulta principal

Answer: C. As colunas selecionadas na subconsulta devem ser as mesmas do outro lado do operador de comparação. Qualquer desigualdade de tipo de dados ou número de colunas resultaria em um erro 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)
  1. SELECT department_name
    FROM employees
    WHERE department_id  IN (SELECT distinct (department_id )
    			FROM employees);
  2. SELECT department_name
    FROM employees
    WHERE department_id  ANY (SELECT distinct (department_id )
    			FROM employees);
  3. SELECT department_name
    FROM employees
    WHERE department_id  < ANY (SELECT distinct (department_id )
    			FROM employees);
  4. 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?

  1. 20
  2. 50
  3. Unlimited
  4. 255

Answer: D. O Oracle suporta o aninhamento de consultas em 255 níveis.

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?

  1. Usando GROUP BY
  2. Usando subconsultas
  3. Usando HAVING
  4. Nenhuma das acima

Answer: D. Pode ser possível que as subconsultas forneçam um resultado NULL, que resulta em 0 linhas no resultado principal; portanto, é uma boa prática usá-los apenas se soubermos de quais valores precisamos.

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

  1. WHERE job_id = (SELECT job_id FROM employees WHERE employee_id = 210);
  2. WHERE job_id IN (SELECT job_id FROM employees WHERE employee_id = 210);
  3. WHERE job_id > (SELECT job_id FROM employees WHERE employee_id = 210);
  4. 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);

Qual será o resultado dessa mudança?

  1. Os resultados serão os mesmos
  2. Erro ORA lançado na execução
  3. Os resultados serão diferentes
  4. A consulta será executada com sucesso, fornecendo 0 linhas.

Answer: B. A subconsulta fornece mais de um resultado na alteração fornecida e, portanto, um operador de várias linhas deve substituir o "=" na consulta principal fornecida acima.

48.Examine the table structures as shown in the exhibit below.

Você precisa exibir os nomes dos funcionários que têm o salário mais alto. Qual das seguintes instruções SQL estará correta?

  1. SELECT first_name, last_name, grade
    FROM employees, grade
    WHERE (SELECT max (salary) FROM employees) BETWEEN losal and hisal;
  2. 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;
  3. SELECT first_name, last_name, grade
    FROM employees, grade
    WHERE salary = (SELECT max (salary) FROM employees) 
    AND salary BETWEEN losal and hisal;
  4. 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. As subconsultas podem ser escritas em qualquer lado do operador

49.What is the sub-query in the FROM clause of an SQL statement? (Choose the most appropriate answer)

  1. Subconsulta de linha única
  2. Subconsulta de várias linhas
  3. Visualização embutida
  4. Subconsulta correlacionada

Answer: C. Se uma subconsulta aparecer na cláusula FROM das instruções SELECT, ela formará uma visualização embutida. O Oracle cria internamente uma visão temporária para a execução da consulta.

50.What is the maximum number of nesting level allowed in an Inline View type sub-query?

  1. 255
  2. 300
  3. 216
  4. Unlimited

Answer: D. Como não há limite para o número de tabelas que podem ser unidas, não há limite para o número de visualizações embutidas em uma consulta.

51.What is true about co-related sub-queries?

  1. As tabelas usadas na consulta principal também são usadas em uma subconsulta correlacionada
  2. As subconsultas que fazem referência a uma coluna usada na consulta principal são chamadas de subconsultas correlacionadas
  3. As subconsultas que são escritas sem parênteses são chamadas de subconsultas co-relacionadas
  4. As subconsultas que obrigatoriamente utilizam tabelas diferentes das utilizadas na consulta principal são chamadas de subconsultas correlacionadas

Answer: B. A subconsulta correlacionada faz referência a uma coluna na consulta externa e executa a subconsulta uma vez para cada linha na consulta externa, enquanto a subconsulta não correlacionada executa a subconsulta primeiro e passa o valor para a consulta externa.

52.Which of the following statements cannot be parent statements for a sub-query?

  1. SELECT
  2. GRUPO POR
  3. UPDATE
  4. DELETE

Answer: B. O resto das opções podem estar na consulta principal (consulta pai) de uma subconsulta.

53.What is true about a co-related sub-query?

  1. É avaliado apenas uma vez para a consulta pai
  2. É avaliado apenas três vezes para a consulta pai
  3. É avaliado uma vez para cada linha processada pela subconsulta pai
  4. Tudo acima

Answer: C. A subconsulta correlacionada faz referência a uma coluna na consulta externa e executa a subconsulta uma vez para cada linha na consulta externa; e o operador EXISTS é usado para testar se o relacionamento ou link 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)
  1. 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 ;
  2. 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 ;
  3. 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 ;
  4. 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. Aqui é obtido o ID do departamento, usado para avaliar a consulta pai e se o salário nessa linha for maior que o salário médio dos departamentos dessa linha, esse resultado é retornado.

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)
  1. SELECT *
    FROM employees E
    WHERE exists (SELECT 1 FROM employees E1
    		WHERE E.employee_id = E1.employee_id);
  2. SELECT *
    FROM employees E
    WHERE exists (SELECT 1 FROM employees E1
    		WHERE E.employee_id = E1.employee_id
    		AND E.ROWID < E1.ROWID);
  3. SELECT *
    FROM employees E
    WHERE exists (SELECT 1 FROM employees E1
    		WHERE E.ROWID < E1.ROWID);
  4. 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. A subconsulta correlacionada faz referência a uma coluna na consulta externa e executa a subconsulta uma vez para cada linha na consulta externa; e o operador EXISTS é usado para testar se o relacionamento ou link está presente. Ele pode ser usado para localizar as linhas duplicadas em uma tabela onde a duplicidade está sujeita a uma coluna ou conjunto de colunas.

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?

  1. SELECT sysdate,
    		(SELECT * FROM departments) dept_count,
    		(SELECT * FROM employees) emp_count
    FROM DUAL;
  2. SELECT sysdate,
    		(SELECT count(*) FROM departments) dept_count,
    		(SELECT count(*) FROM employees) emp_count
    FROM DUAL
    GROUP BY department_id ;
  3. SELECT sysdate,
    		(SELECT * FROM departments) dept_count,
    		(SELECT * FROM employees) emp_count
    FROM DUAL
    GROUP BY employee_id;
  4. SELECT sysdate,
    		(SELECT count(*) FROM departments) dept_count,
    		(SELECT count(*) FROM employees) emp_count
    FROM DUAL;

Answer: D. Uma subconsulta de uma única linha também pode ser aninhada na cláusula SELECT da consulta externa. Nesse caso, o valor que a subconsulta retorna está disponível para cada linha de saída que a consulta externa gera. Normalmente, essa técnica é usada para realizar cálculos com um valor produzido a partir de uma subconsulta.

57.Which of the following queries will tell whether a given employee is a manager in a Company 'XYZ'?

  1. SELECT employee_id, manager_id
    FROM employees A
    WHERE employee_id ANY (SELECT manager_id from employees B)
    ORDER BY manager_id desc;
  2. SELECT employee_id, manager_id
    FROM employees A
    WHERE employee_id < ALL (SELECT manager_id from employees B)
  3. SELECT employee_id, manager_id
    FROM employees A
    WHERE employee_id IN (SELECT manager_id from employees B)
    ORDER BY manager_id desc;
  4. 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?

  1. SELECT max (salary), city
    FROM
    (SELECT salary, department_id , loc, city
    FROM employees natural join departments natural join locations);
  2. SELECT salary, city
    FROM
    (SELECT salary, department_id , loc, city
    FROM employees natural join departments natural join locations);
  3. SELECT max (salary), city
    FROM
    (SELECT salary, department_id , loc, city
    FROM employees natural join departments natural join locations)
    GROUP BY city;
  4. SELECT max (avg(salary)), city
    FROM
    (SELECT salary, department_id , loc, city
    FROM employees natural join departments natural join locations);

Answer: C. Quando uma subconsulta de várias colunas é usada na cláusula FROM da consulta externa, ela cria uma tabela temporária que pode ser referenciada por outras cláusulas da consulta externa. Essa tabela temporária é mais formalmente chamada de visualização embutida. Os resultados da subconsulta são tratados como qualquer outra tabela na cláusula FROM. Se a tabela temporária contiver dados agrupados, os subconjuntos agrupados serão tratados como linhas separadas de dados em uma tabela.

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 a seguinte consulta e responda às perguntas 59 a 62 que se seguem.

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?

  1. SELECT department_name
    FROM departments
    WHERE department_id  = ANY (SELECT department_id  FROM employees);
  2. SELECT department_name
    FROM departments
    WHERE department_id  IN (SELECT distinct(department_id ) FROM employees);
  3. SELECT department_name
    FROM departments
    WHERE department_id  = (SELECT distinct(department_id ) FROM employees);
  4. 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 );

Qual será o resultado como resultado dessa mudança? (Escolha a resposta mais adequada)

  1. Ele irá ordenar o department_id obtido da subconsulta e exibi-los em ordem crescente
  2. Ele lançará um erro ORA, pois a cláusula ORDER BY deve ser acompanhada pela cláusula GROUP BY
  3. Ele lançará um erro ORA porque uma cláusula ORDER BY não pode ser usada dentro de uma subconsulta
  4. Ele será executado com sucesso.

Answer: C. Uma subconsulta, exceto uma na cláusula FROM, não pode ter uma cláusula ORDER BY. Se você precisar exibir a saída em uma ordem específica, inclua uma cláusula ORDER BY como a última cláusula da 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;

Qual será o resultado como resultado dessa mudança? (Escolha a resposta mais adequada)

  1. Ele irá ordenar o department_id obtido da subconsulta e exibi-los em ordem crescente
  2. Ele irá ordenar o department_id obtido da subconsulta e exibi-los em ordem decrescente
  3. Ele lançará um erro ORA porque uma cláusula ORDER BY não pode ser usada dentro de uma subconsulta
  4. Nenhuma das acima

Answer: D. Uma subconsulta, exceto uma na cláusula FROM, não pode ter uma cláusula ORDER BY. Se você precisar exibir a saída em uma ordem específica, inclua uma cláusula ORDER BY como a última cláusula da consulta externa.

62.Which of the following can be used to order results in a sub-query?

  1. ORDENAR POR
  2. HAVING
  3. GRUPO POR
  4. Tudo acima

Answer: C. Por padrão, a cláusula GROUP BY executa o pedido em uma subconsulta.

Examine the exhibit below and answer the questions 63 to 65 that follow:

Considere a seguinte 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?

  1. Ele fornece todos os AU_ID e AU_TITLEs começando com a letra 'S%'
  2. Ele fornece todos os AU_ID e AU_TITLEs começando com a letra 'S%' ordenados pelos títulos em ordem crescente
  3. Ele lança um erro ORA
  4. Ele retorna um valor 0

Answer: C. Uma coluna com CLOB, BLOB, NCLOB ou ARRAY não pode ser usada em uma 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 retorna um erro. Qual é o motivo do erro?

  1. Uma cláusula GROUP BY deve ser usada como a função MAX é usada
  2. Ambas as subconsultas não podem usar o mesmo ID de departamento na mesma consulta externa
  3. O operador BETWEEN não pode ser usado com uma subconsulta
  4. A cláusula SELECT deve ter colunas mencionadas e não um asterisco (*)

Answer: C. O operador BETWEEN pode ser usado em uma subconsulta, mas não em uma subconsulta.

65.What is true about using NOT IN when writing queries with sub-queries in them?

  1. NOT IN ignora todos os valores NULL e fornece apenas os valores NOT NULL
  2. NOT IN coloca todos os valores NULL no último e dá o NOT NULL a ser exibido primeiro
  3. NOT IN não deve ser usado se um valor NULL for esperado no conjunto de resultados
  4. NOT IN é apenas uma negação do operador IN e pode ser alterado sem qualquer ressalva.

Answer: C. O SQL trata os valores NULL de uma maneira diferente e, portanto, é uma boa prática evitar NOT IN se o conjunto de resultados puder conter um 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.

  1. SELECT department_id , min(salary)
    FROM employees
    GROUP BY department_id 
    HAVING min(salary) >
    		(
    		select max(salary)
    		FROM employees
    		where department_id  = 10
    		)
  2. SELECT department_id , min(salary)
    FROM employees
    GROUP BY department_id 
    HAVING min(salary) > ANY
    		(
    		select max(salary)
    		FROM employees
    		)
  3. SELECT department_id , min(salary)
    FROM employees
    HAVING max(salary) < ANY
    		(
    		select min(salary)
    		FROM employees
    		where department_id  = 10
    		)
  4. 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)

  1. SELECT employee_id, Salary
    FROM employees
    WHERE salary in
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)
  2. SELECT employee_id, Salary
    FROM employees
    WHERE salary =ANY
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)
  3. SELECT employee_id, Salary
    FROM employees
    WHERE salary ALL
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)
  4. 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?

  1. SELECT employee_id, Salary
    FROM employees
    WHERE salary >= ANY
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)
  2. SELECT employee_id, Salary
    FROM employees
    WHERE salary > ANY
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)
  3. SELECT employee_id, Salary
    FROM employees
    WHERE salary < ANY
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)
  4. 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?

  1. SELECT employee_id, Salary
    FROM employees
    WHERE salary > ALL
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)
  2. SELECT employee_id, Salary
    FROM employees
    WHERE salary =ALL
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)
  3. SELECT employee_id, Salary
    FROM employees
    WHERE salary < ALL
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)
  4. SELECT employee_id, Salary
    FROM employees
    WHERE salary < ANY
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)

Answer: C. Subconsultas de várias linhas retornam mais de uma linha de resultados. Os operadores que podem ser usados ​​com subconsultas de várias linhas incluem IN, ALL, ANY e EXISTS. As subconsultas de várias colunas retornam mais de uma coluna para a consulta externa. As colunas de dados são passadas para a consulta externa na mesma ordem em que estão listadas na cláusula SELECT da 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?

  1. 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)
    		)
  2. 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)
    		)
  3. 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)
    		)
  4. 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. Subconsultas de várias linhas retornam mais de uma linha de resultados. Os operadores que podem ser usados ​​com subconsultas de várias linhas incluem IN, ALL, ANY e EXISTS. Subconsultas de várias colunas retornam mais de uma coluna para a consulta externa. As colunas de dados são passadas para a consulta externa na mesma ordem em que estão listadas na cláusula SELECT da 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)

  1. 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
  2. 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;
  3. 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
  4. 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)

  1. 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'
  2. 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'
    )
  3. 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'
    )
  4. 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)

  1. SELECT employee_id, Job_id
    FROM employees E
    WHERE exists
    (
    SELECT 1
    FROM employees E1
    WHERE E.job_id  = E1.job_id )
  2. SELECT employee_id, Job_id 
    FROM employees E
    WHERE exists
    (
    SELECT *
    FROM employees E1
    WHERE E.job_id  = E1.job_id )
  3. SELECT employee_id, Job_id 
    FROM employees E
    WHERE not exists
    (
    SELECT *
    FROM employees E1
    WHERE E.job_id  = E1.job_id )
  4. SELECT employee_id, Job_id 
    FROM employees E
    WHERE exists
    (
    SELECT 1
    FROM employees E1
    WHERE E.job_id  < E1.job_id )

Answer: A. O operador EXISTS é usado para verificar e combinar os registros entre as consultas. Ele retorna um valor BOOLEANO. A subconsulta correlacionada faz referência a uma coluna na consulta externa e executa a subconsulta uma vez para cada linha na consulta externa; e o operador EXISTS é usado para testar se o relacionamento ou link está presente. Uma subconsulta não correlacionada executa a subconsulta primeiro e passa o valor para a 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)

  1. SELECT employee_id, Job_id 
    FROM employees E
    WHERE exists
    (
    SELECT *
    FROM employees E1
    WHERE E.job_id  = E1.job_id )
  2. SELECT employee_id, Job_id 
    FROM employees E
    WHERE not exists
    (
    SELECT 1
    FROM employees E1
    WHERE E.job_id  = E1.job_id )
  3. SELECT employee_id, Job_id 
    FROM employees E
    WHERE not exists
    (
    SELECT *
    FROM employees E1
    WHERE E.job_id  = E1.job_id )
  4. SELECT employee_id, Job_id 
    FROM employees E
    WHERE exists
    (
    SELECT 1
    FROM employees E1
    WHERE E.job_id  < E1.job_id )

Answer: B. O NOT EXISTS é o operador de negação para 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)

  1. SELECT * 
    FROM employees E
    WHERE salary = (SELECT count(distinct salary ) 
    		FROM employees 
    		WHERE e.salary = salary 
    		);
  2. SELECT * 
    FROM employees E
    WHERE 1 = (SELECT count(distinct salary ) 
    		FROM employees 
    		WHERE e.salary < salary 
    		);
  3. SELECT * 
    FROM employees E
    WHERE 2 = (SELECT count(distinct salary ) 
    		FROM employees 
    		WHERE e.salary >salary 
    		);
  4. 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)

  1. SELECT salary FROM 
    (
    	SELECT rowid as user_sal 
    	FROM (SELECT distinct salary  from employees ORDER BY salary  desc)
    ) 
    WHERE user_sal=&N ;
  2. SELECT salary FROM 
    (	
    	SELECT rownum as user_sal
    	FROM (SELECT distinct salary  FROM employees   		GROUP BY salary )
    ) 
    WHERE user_sal <= &N ;
  3. SELECT salary FROM 
    (
    	SELECT rownum as user_sal, salary 	FROM (SELECT distinct salary  FROM employees 		 ORDER BY salary  desc)
    ) 
    WHERE user_sal=&N ;
  4. 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 é uma pseudocoluna usada para encontrar os resultados da enésima ordem.

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)

  1. A declaração lançaria um erro ORA
  2. A instrução retornaria todas as linhas da tabela
  3. A instrução retornaria NULL como resultado de saída.
  4. A instrução não retornaria nenhuma linha no resultado.

Answer: D.

78.What is the maximum level up to which Sub-queries can be nested?

  1. 255
  2. 100
  3. 2
  4. 16

Answer: A.

79.What is true about the EXISTS operator in SQL queries with respect to sub-queries?

  1. As colunas selecionadas nas subconsultas são importantes
  2. A consulta interna deve retornar linhas, qualquer resultado é o que é importante, não o que é SELECIONADO
  3. Ambos a e B
  4. Nem A nem B

Answer: B.

80.What is true about the ANY operator used for sub-queries?

  1. Retorna linhas que correspondem a todos os valores em uma lista / subconsulta
  2. Retorna linhas que correspondem aos 5 primeiros valores em uma lista / subconsulta
  3. Retorna linhas que correspondem a qualquer valor em uma lista / subconsulta
  4. Retorna o valor 0 quando todas as linhas correspondem em uma lista / subconsulta

Answer: C.

81.What is true about the ALL operator used for sub-queries? (Choose the most appropriate answer.)

  1. Retorna linhas que correspondem a todos os valores em uma lista / subconsulta
  2. Retorna linhas que correspondem apenas a alguns valores em uma lista / subconsulta
  3. Retorna linhas apenas se todos os valores corresponderem a uma lista / subconsulta
  4. Tudo acima

Answer: C. '> ALL' Mais que o maior valor retornado pela subconsulta. '<ALL' Menor que o menor valor retornado pela subconsulta. '<QUALQUER' Menor que o maior valor retornado pela subconsulta. '> QUALQUER' Mais do que o menor valor retornado pela subconsulta. '= ANY' Igual a qualquer valor retornado pela subconsulta (igual a IN). '[NOT] EXISTS' A linha deve corresponder a um valor na subconsulta.

82.What is true about using sub-queries in INSERT statements in Oracle?

  1. Eles podem ser usados ​​na cláusula INSERT sem qualquer restrição
  2. Eles podem ser usados ​​na cláusula INSERT apenas para valores numéricos
  3. A lista SELECT de uma subconsulta deve ser igual à lista de colunas da instrução INSERT.
  4. Nenhuma das acima

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)

  1. 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'
    );
  2. 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'
    );
  3. 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'
    );
  4. 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?

  1. SELECT employee_id , salary
    FROM employees 
    WHERE salary < ALL (SELECT salary FROM employees WHERE department_id=100);
  2. SELECT employee_id , salary
    FROM employees WHERE salary < (SELECT min(salary) FROM employees WHERE department_id=100);
  3. SELECT employee_id 
    FROM employees 
    WHERE salary not >= ANY (SELECT salary FROM employees WHERE department_id=100);
  4. Nenhuma das acima

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

O que pode ser dito sobre as duas afirmações?

  1. Ambas as consultas devem gerar o mesmo resultado.
  2. Ambas as consultas gerarão um erro.
  3. Se houver dois departamentos com o mesmo nome, ambas as consultas falharão.
  4. Ambas as consultas serão executadas com sucesso, mesmo se houver mais de um departamento denominado 'CONTAS'.

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

Qual será o resultado da consulta acima?

  1. É executado com sucesso e fornece os resultados necessários
  2. É executado com sucesso, mas não fornece a saída necessária
  3. Ele lança um erro ORA na execução
  4. Ele é executado com sucesso e fornece o resultado necessário quando> ALL é substituído por> = ALL

Answer: B, D. > A ALL não dará o resultado exigido, pois pode haver dois funcionários com o mesmo salário e que são os que ganham mais no 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)

  1. 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;
  2. 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;
  3. 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;
  4. 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?

  1. 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;
  2. 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;
  3. 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;
  4. 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.

  1. SELECT employee_id, max(salary), max(commission_pct )
    FROM employees E
    GROUP BY salary, commission_pct ;
  2. SELECT employee_id, max(salary), max(commission_pct )
    FROM employees E
    GROUP BY salary;
  3. SELECT employee_id, max(salary)
    FROM employees E
    GROUP BY salary, commission_pct 
    HAVING max(commission_pct ) = 100;
  4. SELECT employee_id,
    (SELECT max(salary) FROM employees) * (SELECT max(commission_pct ) FROM employees)
    FROM DUAL;

Answer: D. Uma subconsulta de uma única linha também pode ser aninhada na cláusula SELECT da consulta externa. Nesse caso, o valor que a subconsulta retorna está disponível para cada linha de saída que a consulta externa gera. Normalmente, essa técnica é usada para realizar cálculos com um valor produzido a partir de uma subconsulta.

90.What is true about the sub-queries used in the SELECT clause of an SQL statement?

  1. Essas subconsultas são as mesmas em todos os aspectos que aquelas usadas nas cláusulas FROM ou WHERE
  2. Essas subconsultas devem ser obrigatoriamente subconsultas de uma única linha
  3. Podemos usar operadores de várias linhas ao escrever essas subconsultas
  4. Nenhuma das acima

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;
  1. Dá a data do sistema e o salário máximo para cada departamento
  2. Dá o salário máximo para todos os departamentos
  3. Ele lança um erro ORA
  4. É executado com sucesso com 0 linhas

Answer: C. Uma subconsulta de várias linhas não pode ser usada na cláusula SELECT de uma instrução SQL. Apenas uma subconsulta de uma única linha pode ser aninhada na cláusula SELECT da 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?

  1. SELECT salary
    FROM employees
    WHERE salary >10 or salary > 20 and salary >30;
  2. SELECT salary
    FROM employees
    WHERE salary <10 and salary < 20 and salary <30;
  3. SELECT salary
    FROM employees
    WHERE salary >10 and salary > 20 and salary >30;
  4. SELECT salary
    FROM employees
    WHERE salary >10 and salary > 20 or salary < 30;

Answer: C. A questão mostra a cláusula ALL de forma simplificada quando é seguida por uma 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?

  1. SELECT E.salary
    FROM employees E
    WHERE E.salary > (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  2. SELECT E.salary
    FROM employees E
    WHERE E.salary >ALL (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  3. SELECT E.salary
    FROM employees E
    WHERE E.salary = (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  4. SELECT E.salary
    FROM employees E
    WHERE E.salary >= (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);

Answer: B. A questão mostra a cláusula ALL de forma simplificada quando é seguida por uma 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?

  1. SELECT E.salary
    FROM employees E
    WHERE NOT EXISTS (E.salary =ANY (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  2. SELECT E.salary
    FROM employees E
    WHERE E.salary >ANY (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  3. SELECT E.salary
    FROM employees E
    WHERE E.salary =ANY (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  4. SELECT E.salary
    FROM employees E
    WHERE NOT ( E.salary <= ANY (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100));

Answer: D. O operador NOT usado ao usar '<= ANY' é usado para negar os resultados retornados pela 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?

  1. SELECT E.salary
    FROM employees E
    WHERE NOT EXISTS (E.salary = ANY (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  2. 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);
  3. Ou a ou B
  4. Nenhuma das acima

Answer: B. A subconsulta correlacionada faz referência a uma coluna na consulta externa e executa a subconsulta uma vez para cada linha na consulta externa; e o operador EXISTS é usado para testar se o relacionamento ou link está presente. Uma subconsulta não correlacionada executa a subconsulta primeiro e passa o valor para a 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?

  1. SELECT salary
    FROM employees
    WHERE salary >10 or salary > 20 and or >30;
  2. SELECT salary
    FROM employees
    WHERE salary <10 and salary < 20 and salary <30;
  3. SELECT salary
    FROM employees
    WHERE salary >10 and salary > 20 or salary >30;
  4. SELECT salary
    FROM employees
    WHERE salary >10 and salary > 20 or salary < 30;

Answer: A. A questão mostra a cláusula ANY de forma simplificada quando é seguida por uma 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?

  1. SELECT E.salary
    FROM employees E
    WHERE E.salary > (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  2. SELECT E.salary
    FROM employees E
    WHERE E.salary >ANY (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  3. SELECT E.salary
    FROM employees E
    WHERE E.salary = (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  4. SELECT E.salary
    FROM employees E
    WHERE E.salary >= (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);

Answer: B. A questão mostra a cláusula ANY de maneira simplificada quando é seguida por uma subconsulta

98.With respect to the question 97 above, what among the following will be an equivalent query if ANY is removed?

  1. SELECT E.salary
    FROM employees E
    WHERE NOT EXISTS (E.salary =ANY (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  2. SELECT E.salary
    FROM employees E
    WHERE EXISTS (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100
    And E.salary >E1.salary);
  3. SELECT E.salary
    FROM employees E
    WHERE EXISTS (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100
    );
  4. SELECT E.salary
    FROM employees E
    WHERE IN (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);

Answer: B. O operador EXISTS pode substituir o operador ANY. A subconsulta correlacionada faz referência a uma coluna na consulta externa e executa a subconsulta uma vez para cada linha na consulta externa; e o operador EXISTS é usado para testar se o relacionamento ou link 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. 1 linha
  2. Sem linhas
  3. Ou a ou B
  4. Nenhuma das acima

Answer: B. Se a subconsulta retornar zero linhas, a condição '> ANY' será avaliada como FALSE, portanto, "Nenhuma linha" será retornada.

100. A subquery must be placed in the outer query's HAVING clause if:

  1. A consulta interna precisa fazer referência ao valor retornado à consulta externa.
  2. O valor retornado pela consulta interna deve ser comparado aos dados agrupados na consulta externa.
  3. A subconsulta retorna mais de um valor para a consulta externa.
  4. Nenhuma das acima. As subconsultas não podem ser usadas na cláusula HAVING da consulta externa.

Answer: B. Uma cláusula HAVING é usada quando os resultados do grupo de uma consulta precisam ser restritos com base em alguma condição. Se o resultado de uma subconsulta deve ser comparado com uma função de grupo, você deve aninhar a consulta interna na cláusula HAVING da consulta externa.