쿼리 질문을 해결하기위한 하위 쿼리

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

  1. 정렬 된 하위 쿼리
  2. 그룹화 된 하위 쿼리
  3. 단일 행 하위 쿼리
  4. 해당 사항 없음

Answer: C. 하위 쿼리는 다른 쿼리의 SELECT, FROM, HAVING 또는 WHERE 절에 중첩 된 완전한 쿼리입니다. 하위 쿼리는 괄호로 묶어야하며 최소한 SELECT 및 FROM 절이 있어야합니다. 단일 행 하위 쿼리 및 다중 행 하위 쿼리는 하위 쿼리의 주요 유형입니다.

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

  1. 기본 쿼리가 실행 된 후 실행됩니다.
  2. 기본 쿼리와 병렬로 실행됩니다.
  3. 사용자는 기본 쿼리를 실행 한 다음 원하는 경우 하위 쿼리를 실행할 수 있습니다.
  4. 기본 쿼리가 실행되기 전에 실행됩니다.

Answer: D. 서브 쿼리는 항상 메인 쿼리 실행 전에 실행되며 서브 쿼리가 먼저 완료되고 서브 쿼리의 결과는 외부 쿼리에 대한 입력으로 사용됩니다.

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

  1. 하위 쿼리의 결과는 일반적으로 실행시 무시됩니다.
  2. 하위 쿼리의 결과는 결과를 제공하지 않고 기본 쿼리 실행 속도를 높이는 데 도움이됩니다.
  3. 하위 쿼리의 결과는 기본 쿼리에서 사용됩니다.
  4. 하위 쿼리의 결과는 항상 NULL입니다.

Answer: C. 하위 쿼리가 먼저 완료되고 하위 쿼리의 결과는 외부 쿼리의 입력으로 사용됩니다.

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

  1. SELECT
  2. WHERE
  3. 주문
  4. 그룹화

Answer: A. 하위 쿼리는 SELECT 절로 시작해야하는 다른 쿼리와 같습니다. 외부 쿼리에 포함됩니다.

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

  1. JOINS를 사용하여
  2. WHERE 절 사용
  3. GROUP BY 절 사용
  4. 다른 SELECT 문의 절에 포함 된 SELECT 문을 작성하여

Answer: D. 하위 쿼리는 다른 쿼리의 SELECT, FROM, HAVING 또는 WHERE 절에 중첩 된 완전한 쿼리입니다. 하위 쿼리는 괄호로 묶어야하며 최소한 SELECT 및 FROM 절이 있어야합니다.

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

  1. 가치를 합산해야 할 때
  2. 문자 값을 날짜 또는 숫자 값으로 변환해야 할 때
  3. 동일하거나 다른 테이블의 데이터에 의존하는 조건이있는 테이블에서 행을 선택해야하는 경우.
  4. 해당 사항 없음

Answer: C.

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

  1. HAVING
  2. WHERE
  3. FROM
  4. 무엇보다도

Answer: D. 하위 쿼리는 일반 쿼리와 다르지 않습니다. SELECT 문의 모든 기본 절을 사용할 수 있습니다.

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

  1. >=
  2. <
  3. =
  4. 무엇보다도

Answer: D. 단일 행 연산자에는 =,>, <,> =, <= 및 <>가 포함됩니다.

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

  1. IN
  2. ANY
  3. ALL
  4. 무엇보다도

Answer: D. 다중 행 하위 쿼리는 둘 이상의 결과 행을 반환합니다 .Multiple-row subqueries return more than one row of results. 다중 행 하위 쿼리와 함께 사용할 수있는 연산자에는 IN, ALL, ANY 및 EXISTS가 있습니다 .Operators that can be used with multiple-row subqueries include IN, ALL, ANY, and EXISTS.

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

  1. 버퍼 캐시에 남아 있습니다.
  2. 하위 쿼리 내에 남아 있으며 나중에 필요할 때 사용할 수 있습니다.
  3. 외부 (기본) 쿼리를 완료하는 데 사용됩니다.
  4. A와 C 모두

Answer: C. 하위 쿼리가 먼저 완료되고 하위 쿼리의 결과는 외부 쿼리의 입력으로 사용됩니다.

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. 해당 사항 없음

Answer: A. 'A'옵션에서 내부 하위 쿼리는 외부 쿼리에 대한 결과로 VP의 급여를 제공합니다.

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

  1. 비교 연산자의 양쪽에 하위 쿼리를 작성할 수 있습니다.
  2. 하위 쿼리에는 괄호가 필수가 아닙니다.
  3. 단일 행 하위 쿼리는 다중 행 연산자를 사용할 수 있지만 그 반대의 경우는 불가능합니다.
  4. 무엇보다도

Answer: A. 하위 쿼리는 쿼리 들여 쓰기 및 유용성에 따라 비교 연산자의 왼쪽 또는 오른쪽에 배치 할 수 있습니다.

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. 원하는 결과를 제공하면서 성공적으로 실행됩니다.
  2. 성공적으로 실행되지만 원하는 결과를 제공하지 않습니다.
  3. ORA 오류가 발생합니다.
  4. 성공적으로 실행되고 결과 집합에서 얻은 각 행에 대해 두 개의 값을 제공합니다.

Answer: C. 다중 행 연산자는 단일 행 하위 쿼리에서 사용할 수 없으며 그 반대의 경우도 마찬가지입니다.

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

  1. 기본 쿼리에서 하나의 결과를 제공합니다.
  2. 결과 집합에 하나의 행만 제공합니다.
  3. 내부 SELECT 문에서 하나의 행만 반환합니다.
  4. 기본 (외부) 쿼리에서 여러 행을 제공합니다.

Answer: C. 단일 행 하위 쿼리는 최대 하나의 값을 반환 할 수 있습니다.

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

  1. 내부 쿼리의 결과로 둘 이상의 열을 반환 할 수 있습니다.
  2. 기본 쿼리에서는 여러 행을 반환하지만 내부 쿼리에서는 단일 결과 집합 만 반환합니다.
  3. 기본 쿼리에서는 단일 행을 반환하지만 내부 하위 쿼리에서는 여러 행을 반환합니다.
  4. 내부 SELECT 문에서 둘 이상의 행을 반환합니다.

Answer: D. 다중 열 하위 쿼리는 결과 집합에 둘 이상의 열을 반환하고 다중 행 하위 쿼리는 내부 쿼리에서 둘 이상의 행을 반환합니다.

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

  1. 한 행만 반환합니다.
  2. 단일 행 연산자를 사용합니다.
  3. A 및 B 둘
  4. 해당 사항 없음

Answer: C.

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

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

Answer: A. 단일 행 연산자에는 =,>, <,> =, <= 및 <>가 포함됩니다. 다중 행 하위 쿼리와 함께 사용할 수있는 다중 행 연산자에는 IN, ALL, ANY 및 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'는 고유 한 직원 ID를 필터링하고 하위 쿼리가 단일 행만 반환하도록 보장하기 때문에 'C'보다 더 적절합니다. 이름과 성이 같은 직원이 두 명 이상 있으면 'C'가 실패 할 수 있습니다.

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. 둘 이상의 조건을 추가하기 위해 하나의 SQL 문에 둘 이상의 하위 쿼리를 작성할 수 있습니다.

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

  1. 단일 행 하위 쿼리
  2. 다중 행 하위 쿼리
  3. A 및 B 둘
  4. 인라인 하위 쿼리

Answer: A. 위에 주어진 질문 18 번과 19 번은 SELECT 문에서 사용 하위 쿼리를 보여줍니다.

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

나는. 내부 쿼리는 하나의 테이블에서만 데이터를 가져올 수 있습니다.

ii. 내부 쿼리는 둘 이상의 테이블에서 데이터를 가져올 수 있습니다.

위의 설명 중 옳은 것은 무엇입니까?

  1. (i)
  2. (ii)
  3. (i)와 (ii) 모두
  4. (i)도 (ii)도 아님

Answer: B. 하위 쿼리는 둘 이상의 테이블에서 데이터를 가져올 수 있습니다.

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. 성공적으로 실행되고 최대 급여와 동일한 급여를받는 직원에게 제공됩니다.
  2. 성공적으로 실행되지만 필요한 결과를 제공하지 않습니다.
  3. 하위 쿼리에서 그룹 함수를 사용하면 오류가 발생합니다.
  4. 단일 행 하위 쿼리에 다중 행 연산자가 포함되어야하므로 오류가 발생합니다.

Answer: A. 하위 쿼리 내에서 그룹 함수를 사용할 수 있습니다.

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. 성공적으로 실행하고 모든 직원의 부서 100보다 큰 이름과 최소 급여를 제공합니다.
  2. 성공적으로 실행하고 부서 100의 직원에게 급여를 제공합니다.
  3. 성공적으로 실행되고 모든 직원의 이름과 최소 급여를 제공합니다.
  4. 오류가 발생합니다.

Answer: A. HAVING 절은 표시된대로 하위 쿼리에서 사용할 수 있습니다.

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. 하위 쿼리는 그룹 함수와 HAVING 절을 사용하여 그룹을 제한 할 수 있습니다.

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. GROUP BY 절은 하위 쿼리에 필요하지 않습니다.
  2. 하위 쿼리 SELECT 문에서 함수를 사용할 수 없습니다.
  3. 단일 행 하위 쿼리는 여러 레코드를 제공합니다.
  4. "="연산자의 사용이 유효하지 않습니다. IN 연산자가 올바르게 작동합니다.

Answer: C, D. GROUP BY 절은 각 부서에 대해 최소 커미션 _pct를 제공하므로 여러 결과를 기본 쿼리로 가져와 오류를 발생시킵니다.

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. 하위 쿼리가 유효하지 않기 때문에 쿼리에서 ORA 오류가 발생합니다.

Answer: C. 회사에 job_id가 "XX"인 직원이 없기 때문에 하위 쿼리는 결과를 반환하지 않으며 기본 쿼리의 job_id와 같으면 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. ORA 오류

Answer: D. 질의를 실행하면 "ORA-01427 : 단일 행 하위 질의가 둘 이상의 행을 반환합니다"예외가 발생합니다.

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

  1. <=
  2. 모두> =
  3. !=
  4. >=

Answer: B. 다중 행 하위 쿼리는 둘 이상의 결과 행을 반환합니다. 다중 행 하위 쿼리와 함께 사용할 수있는 연산자에는 IN, ALL, ANY 및 EXISTS가 있습니다. 다중 행 연산자 IN, ANY, ALL은 표시된대로 단일 행 연산자와 함께 사용해야합니다. 옵션 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. 다중 행 연산자는 부울 결과를 반환합니다. 부서 100에 급여 결과가 있으므로 TRUE를 반환합니다. 결과가 0이면 FALSE로 평가됩니다.

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

  1. 성공적으로 실행되어 하나의 결과를 제공합니다.
  2. 모든 직원의 급여 지급을 성공적으로 수행합니다.
  3. NULL
  4. ORA 오류가 발생합니다.

Answer: D. 부서 (100)에 하나의 결과 (단일 행 하위 쿼리)가있는 경우 <ANY 연산자는 다중 행 연산자이므로 오류를 제공합니다.

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

  1. Oracle은 IN 연산자와 마찬가지로 하위 쿼리에서 반환 된 급여의 각 값을 처리합니다.
  2. 결과에는 차이가 없습니다
  3. 결과는 다를 것입니다
  4. 실행시 ORA 오류가 발생합니다.

Answer: A. = ANY 연산자는 IN 연산자와 동일합니다.

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

  1. 급여의 최대 가치를 제공합니다
  2. 급여의 최소 가치를 제공합니다
  3. 그것은 가장 높은 것보다 작은 값을 제공한다는 것을 의미합니다.
  4. 해당 사항 없음

Answer: C. 다중 행 연산자 <ANY는 하위 쿼리의 "최대 값보다 작음"문으로 평가됩니다. '> ALL'하위 쿼리에서 반환 된 가장 높은 값보다 큽니다. '<ALL'하위 쿼리에서 반환 된 가장 낮은 값보다 작습니다. '<ANY'하위 쿼리에서 반환 된 가장 높은 값보다 작습니다. '<ANY'하위 쿼리에서 반환 된 가장 낮은 값보다 큽니다. '= ANY'하위 쿼리에서 반환 된 모든 값과 동일합니다 (IN과 동일). '[NOT] EXISTS'행은 하위 쿼리의 값과 일치해야합니다.

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

  1. 최대 급여를 제공합니다
  2. 하위 쿼리에서 최대 급여 만 찾습니다.
  3. 최저 급여 이상을 준다
  4. 최저 급여를 제공합니다

Answer: C. 다중 행 연산자> ANY는 하위 쿼리의 "최소값보다 큼"문으로 평가됩니다. '> ALL'하위 쿼리에서 반환 된 가장 높은 값보다 큽니다. '<ALL'하위 쿼리에서 반환 된 가장 낮은 값보다 작습니다. '<ANY'하위 쿼리에서 반환 된 가장 높은 값보다 작습니다. '> ANY'하위 쿼리에서 반환 된 가장 낮은 값보다 큽니다. '= ANY'하위 쿼리에서 반환 된 모든 값과 동일합니다 (IN과 동일). '[NOT] EXISTS'행은 하위 쿼리의 값과 일치해야합니다.

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

다음 중 위 쿼리에서 주어진 것과 동일한 WHERE 절은 무엇입니까? (급여가 2500, 3000, 3500,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. IN 연산자를 사용하면 Oracle은 옵션 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은 최소값보다 작음을 의미합니다. '> ALL'하위 쿼리에서 반환 된 가장 높은 값보다 큽니다. '<ALL'하위 쿼리에서 반환 된 가장 낮은 값보다 작습니다. '<ANY'하위 쿼리에서 반환 된 가장 높은 값보다 작습니다. '> ANY'하위 쿼리에서 반환 된 가장 낮은 값보다 큽니다. '= ANY'하위 쿼리에서 반환 된 모든 값과 동일합니다 (IN과 동일). '[NOT] EXISTS'행은 하위 쿼리의 값과 일치해야합니다.

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. 동일한 결과를 제공하면서 성공적으로 실행됩니다.
  2. ORA 오류가 발생합니다.
  3. 성공적으로 실행되지만 job_id가 'FI_ACCOUNTANT'인 모든 직원보다 급여가 적은 직원의 세부 정보를 제공합니다.
  4. 해당 사항 없음

Answer: C. > ALL은 최소값보다 작음을 의미합니다. '> ALL'하위 쿼리에서 반환 된 가장 높은 값보다 큽니다. '<ALL'하위 쿼리에서 반환 된 가장 낮은 값보다 작습니다. '<ANY'하위 쿼리에서 반환 된 가장 높은 값보다 작습니다. '> ANY'하위 쿼리에서 반환 된 가장 낮은 값보다 큽니다. '= ANY'하위 쿼리에서 반환 된 모든 값과 동일합니다 (IN과 동일). '[NOT] EXISTS'행은 하위 쿼리의 값과 일치해야합니다.

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은 다중 행 연산자 IN, ANY 및 ALL과 함께 사용할 수 있습니다.

주어진 테이블 구조를 조사하십시오. 다음 질문을 고려하여 38 번과 39 번 질문에 답하십시오. 부하 직원이없는 직원을 찾아야합니다. (예상 결과가 0이라고 가정)

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. ORA 오류
  4. 0

Answer: D. 내부 하위 쿼리의 값 중 하나가 NULL입니다 (모든 직원이 관리자가 아닙니다!).

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. 하위 쿼리에 NULL 값이있을 가능성이있는 경우 NOT IN 연산자를 사용하지 않거나 사용하는 경우 추가 WHERE 절 (옵션 D)로 하위 쿼리를 수정합니다.

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

  1. 하위 쿼리는 기본 쿼리와 별도로 실행해야합니다.
  2. 하위 쿼리는 사용자의 의지에 따라 실행할 수 있으며 기본 쿼리 실행과 관련이 없습니다.
  3. 하위 쿼리는 내부 쿼리의 결과가 기본 쿼리에서 사용되는 두 개의 순차적 쿼리와 같습니다.
  4. 무엇보다도

Answer: C.

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

  1. 하위 쿼리는 0 개 이상의 행을 반환 할 수 있습니다.
  2. 하위 쿼리는 SELECT 절에서만 사용할 수 있습니다.
  3. 하위 쿼리의 중첩은 2 단계로 제한됩니다.
  4. 그룹 함수는 하위 쿼리에서 사용할 수 없습니다.

Answer: A. 하위 쿼리는 다른 쿼리의 SELECT, FROM, HAVING 또는 WHERE 절에 중첩 된 완전한 쿼리입니다. 하위 쿼리는 괄호로 묶어야하며 최소한 SELECT 및 FROM 절이 있어야합니다. 단일 행 하위 쿼리는 최대 하나의 값을 반환 할 수 있습니다. 다중 열 하위 쿼리는 둘 이상의 열을 외부 쿼리에 반환합니다.

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)

다음 쿼리를 고려하십시오.

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

이 쿼리는 오류를 반환합니다. 오류의 이유는 무엇입니까?

  1. 사용 된 NOT IN 연산자가 잘못되었습니다.
  2. 하위 쿼리의 WHERE 절이 잘못 작성되었습니다.
  3. 하위 쿼리 SELECT 절의 열은 기본 쿼리에 부등식이 사용되는 경우에만 하나 여야합니다.
  4. 하위 쿼리는 기본 쿼리와 동일한 테이블을 사용합니다.

Answer: C. 하위 쿼리에서 선택한 열은 비교 연산자의 다른 쪽과 동일해야합니다. 데이터 유형 또는 열 수가 같지 않으면 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. Oracle은 255 레벨의 쿼리 중첩을 지원합니다.

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. GROUP BY 사용
  2. 하위 쿼리 사용
  3. HAVING 사용
  4. 해당 사항 없음

Answer: D. 하위 쿼리가 NULL 결과를 제공하여 기본 결과에 0 개의 행이 표시 될 수 있습니다. 따라서 필요한 값을 알고있는 경우에만 사용하는 것이 좋습니다.

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

이 변경의 결과는 무엇입니까?

  1. 결과는 동일합니다
  2. 실행시 ORA 오류가 발생했습니다.
  3. 결과는 다를 것입니다
  4. 쿼리가 성공적으로 실행되어 0 개의 행을 제공합니다.

Answer: B. 하위 쿼리는 주어진 변경에 대해 둘 이상의 결과를 제공하므로 다중 행 연산자는 위에 제공된 기본 쿼리에서 "="를 대체해야합니다.

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

급여가 가장 높은 직원의 이름을 표시해야합니다. 다음 중 올바른 SQL 문은 무엇입니까?

  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. 하위 쿼리는 연산자의 양쪽에 작성할 수 있습니다.

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

  1. 단일 행 하위 쿼리
  2. 다중 행 하위 쿼리
  3. 인라인보기
  4. 공동 관련 하위 쿼리

Answer: C. SELECT 문의 FROM 절에 하위 쿼리가 나타나면 인라인 뷰를 구성합니다. Oracle은 내부적으로 쿼리 실행을위한 임시 뷰를 생성합니다.

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. 조인 할 수있는 테이블 수에는 제한이 없으므로 쿼리에서 인라인 뷰 수에는 제한이 없습니다.

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

  1. 기본 쿼리에 사용 된 테이블은 공동 관련 하위 쿼리에서도 사용됩니다.
  2. 기본 쿼리에서 사용되는 열을 참조하는 하위 쿼리를 공동 관련 하위 쿼리라고합니다.
  3. 괄호없이 작성된 하위 쿼리를 공동 관련 하위 쿼리라고합니다.
  4. 기본 쿼리에 사용 된 테이블과 다른 테이블을 의무적으로 사용하는 하위 쿼리를 공동 관련 하위 쿼리라고합니다.

Answer: B. 상관 하위 쿼리는 외부 쿼리의 열을 참조하고 외부 쿼리의 모든 행에 대해 한 번씩 하위 쿼리를 실행하는 반면 Uncorrelated 하위 쿼리는 먼저 하위 쿼리를 실행하고 값을 외부 쿼리에 전달합니다.

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

  1. SELECT
  2. 그룹화
  3. UPDATE
  4. DELETE

Answer: B. 나머지 옵션은 하위 쿼리의 기본 쿼리 (상위 쿼리)에있을 수 있습니다.

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

  1. 상위 쿼리에 대해 한 번만 평가됩니다.
  2. 상위 쿼리에 대해 세 번만 평가됩니다.
  3. 상위 하위 쿼리에서 처리 된 각 행에 대해 한 번씩 평가됩니다.
  4. 무엇보다도

Answer: C. 상관 하위 쿼리는 외부 쿼리의 열을 참조하고 외부 쿼리의 모든 행에 대해 한 번씩 하위 쿼리를 실행하며 EXISTS 연산자는 관계 또는 링크가 있는지 여부를 테스트하는 데 사용됩니다.

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. 여기서 부서 ID를 가져와 상위 쿼리를 평가하는 데 사용되며 해당 행의 급여가 해당 행의 부서 평균 급여보다 큰 경우 해당 결과가 반환됩니다.

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. 상관 하위 쿼리는 외부 쿼리의 열을 참조하고 외부 쿼리의 모든 행에 대해 한 번씩 하위 쿼리를 실행하며 EXISTS 연산자는 관계 또는 링크가 있는지 여부를 테스트하는 데 사용됩니다. 이중성이 열 또는 열 집합의 영향을받는 테이블에서 중복 행을 찾는 데 사용할 수 있습니다.

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. 단일 행 하위 쿼리는 외부 쿼리의 SELECT 절에 중첩 될 수도 있습니다. 이 경우 하위 쿼리가 반환하는 값은 외부 쿼리가 생성하는 모든 출력 행에 사용할 수 있습니다. 일반적으로이 기술은 하위 쿼리에서 생성 된 값으로 계산을 수행하는 데 사용됩니다.

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. 외부 쿼리의 FROM 절에서 다중 열 하위 쿼리를 사용하면 외부 쿼리의 다른 절에서 참조 할 수있는 임시 테이블이 생성됩니다. 이 임시 테이블을보다 공식적으로 인라인보기라고합니다. 하위 쿼리의 결과는 FROM 절의 다른 테이블처럼 처리됩니다. 임시 테이블에 그룹화 된 데이터가 포함 된 경우 그룹화 된 하위 집합은 테이블에서 별도의 데이터 행으로 처리됩니다.

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)

다음 질문을 고려하고 그 뒤에 나오는 59 ~ 62 개의 질문에 답하십시오.

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

이 변경의 결과는 무엇입니까? (가장 적절한 답을 선택하십시오)

  1. 하위 쿼리에서 가져온 department_id를 정렬하고 오름차순으로 표시합니다.
  2. ORDER BY 절이 GROUP BY 절과 함께 있어야하므로 ORA 오류가 발생합니다.
  3. 하위 쿼리 내에서 ORDER BY 절을 사용할 수 없기 때문에 ORA 오류가 발생합니다.
  4. 성공적으로 실행됩니다.

Answer: C. FROM 절에서 하나를 제외한 하위 쿼리는 ORDER BY 절을 가질 수 없습니다. 특정 순서로 출력을 표시해야하는 경우 외부 쿼리의 마지막 절로 ORDER BY 절을 포함합니다.

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;

이 변경의 결과는 무엇입니까? (가장 적절한 답을 선택하십시오)

  1. 하위 쿼리에서 가져온 department_id를 정렬하고 오름차순으로 표시합니다.
  2. 하위 쿼리에서 가져온 department_id를 정렬하고 내림차순으로 표시합니다.
  3. 하위 쿼리 내에서 ORDER BY 절을 사용할 수 없기 때문에 ORA 오류가 발생합니다.
  4. 해당 사항 없음

Answer: D. FROM 절에서 하나를 제외한 하위 쿼리는 ORDER BY 절을 가질 수 없습니다. 특정 순서로 출력을 표시해야하는 경우 외부 쿼리의 마지막 절로 ORDER BY 절을 포함합니다.

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

  1. 주문
  2. HAVING
  3. 그룹화
  4. 무엇보다도

Answer: C. 기본적으로 GROUP BY 절은 하위 쿼리에서 정렬을 수행합니다.

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

다음 쿼리를 고려하십시오.

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

63.What will be the outcome of the query given above?

  1. 문자 'S %'로 시작하는 모든 AU_ID 및 AU_TITLE을 제공합니다.
  2. 제목에 따라 오름차순으로 정렬 된 문자 'S %'로 시작하는 모든 AU_ID 및 AU_TITLE을 제공합니다.
  3. ORA 오류가 발생합니다.
  4. 0 값을 반환합니다.

Answer: C. CLOB, BLOB, NCLOB 또는 ARRAY가있는 열은 하위 쿼리에서 사용할 수 없습니다.

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

이 쿼리는 오류를 반환합니다. 오류의 원인은 무엇입니까?

  1. MAX 함수를 사용할 때 GROUP BY 절을 사용해야합니다.
  2. 두 하위 쿼리 모두 동일한 외부 쿼리에서 동일한 부서 ID를 사용할 수 없습니다.
  3. BETWEEN 연산자는 하위 쿼리와 함께 사용할 수 없습니다.
  4. SELECT 절에는 별표 (*)가 아닌 언급 된 열이 있어야합니다.

Answer: C. BETWEEN 연산자는 하위 쿼리 내에서 사용할 수 있지만 하위 쿼리에서는 사용할 수 없습니다.

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

  1. NOT IN은 모든 NULL 값을 무시하고 NOT NULL 값만 제공합니다.
  2. NOT IN은 모든 NULL 값을 마지막에 넣고 NOT NULL을 먼저 표시합니다.
  3. 결과 세트에 NULL 값이 예상되는 경우 NOT IN을 사용하지 않아야합니다.
  4. NOT IN은 연산자 IN의 부정 일 뿐이며 경고없이 변경할 수 있습니다.

Answer: C. SQL은 NULL 값을 다른 방식으로 처리하므로 결과 집합에 NULL이 포함될 수있는 경우 NOT IN을 피하는 것이 좋습니다.

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. 다중 행 하위 쿼리는 둘 이상의 결과 행을 반환합니다. 다중 행 하위 쿼리와 함께 사용할 수있는 연산자에는 IN, ALL, ANY 및 EXISTS가 포함되며 다중 열 하위 쿼리는 둘 이상의 열을 외부 쿼리에 반환합니다. 데이터 열은 하위 쿼리의 SELECT 절에 나열된 순서와 동일한 순서로 외부 쿼리에 전달됩니다.

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. 다중 행 하위 쿼리는 둘 이상의 결과 행을 반환합니다. 다중 행 하위 쿼리와 함께 사용할 수있는 연산자에는 IN, ALL, ANY 및 EXISTS가 있습니다. 다중 열 하위 쿼리는 둘 이상의 열을 외부 쿼리에 반환합니다. 데이터 열은 하위 쿼리의 SELECT 절에 나열된 순서와 동일한 순서로 외부 쿼리에 전달됩니다.

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. EXISTS 연산자는 쿼리간에 레코드를 확인하고 일치시키는 데 사용됩니다. BOOLEAN 값을 반환합니다. 상관 하위 쿼리는 외부 쿼리의 열을 참조하고 외부 쿼리의 모든 행에 대해 한 번씩 하위 쿼리를 실행하며 EXISTS 연산자는 관계 또는 링크가 있는지 여부를 테스트하는 데 사용됩니다. 상관되지 않은 하위 쿼리는 먼저 하위 쿼리를 실행하고 값을 외부 쿼리에 전달합니다.

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. NOT EXISTS는 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은 n 차 결과를 찾는 데 사용되는 유사 열입니다.

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. 이 명령문은 ORA 오류를 발생시킵니다.
  2. 이 문은 테이블의 모든 행을 반환합니다.
  3. 명령문은 출력 결과로 NULL을 리턴합니다.
  4. 이 명령문은 결과에 행을 반환하지 않습니다.

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. 하위 쿼리에서 선택한 열이 중요합니다.
  2. 내부 쿼리는 행을 반환해야하며 모든 결과는 SELECTED가 아니라 중요한 것입니다.
  3. A 및 B 둘
  4. A도 B도 아님

Answer: B.

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

  1. 목록 / 하위 쿼리의 모든 값과 일치하는 행을 반환합니다.
  2. 목록 / 하위 쿼리에서 처음 5 개 값과 일치하는 행을 반환합니다.
  3. 목록 / 하위 쿼리의 값과 일치하는 행을 반환합니다.
  4. 목록 / 하위 쿼리에서 모든 행이 일치하면 값 0을 반환합니다.

Answer: C.

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

  1. 목록 / 하위 쿼리의 모든 값과 일치하는 행을 반환합니다.
  2. 목록 / 하위 쿼리의 일부 값과 만 일치하는 행을 반환합니다.
  3. 목록 / 하위 쿼리에서 모든 값이 일치하는 경우에만 행을 반환합니다.
  4. 무엇보다도

Answer: C. '> ALL'하위 쿼리에서 반환 된 가장 높은 값보다 큽니다. '<ALL'하위 쿼리에서 반환 된 가장 낮은 값보다 작습니다. '<ANY'하위 쿼리에서 반환 된 가장 높은 값보다 작습니다. '> ANY'하위 쿼리에서 반환 된 가장 낮은 값보다 큽니다. '= ANY'하위 쿼리에서 반환 된 모든 값과 동일합니다 (IN과 동일). '[NOT] EXISTS'행은 하위 쿼리의 값과 일치해야합니다.

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

  1. 제한없이 INSERT 절에서 사용할 수 있습니다.
  2. 숫자 값에 대해서만 INSERT 절에서 사용할 수 있습니다.
  3. 하위 쿼리의 SELECT 목록은 INSERT 문의 열 목록과 동일해야합니다.
  4. 해당 사항 없음

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. 해당 사항 없음

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

두 진술에 대해 무엇을 말할 수 있습니까?

  1. 두 쿼리 모두 동일한 결과를 생성해야합니다.
  2. 두 쿼리 모두 오류가 발생합니다.
  3. 이름이 같은 부서가 두 개인 경우 두 쿼리가 모두 실패합니다.
  4. 이름이 'ACCOUNTS'인 부서가 둘 이상인 경우에도 두 쿼리 모두 성공적으로 실행됩니다.

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

위 쿼리의 결과는 무엇입니까?

  1. 성공적으로 실행되고 필요한 결과를 제공합니다.
  2. 성공적으로 실행되지만 필요한 출력을 제공하지 않습니다.
  3. 실행시 ORA 오류가 발생합니다.
  4. 성공적으로 실행되고> ALL이> = ALL로 바뀌면 필요한 결과를 제공합니다.

Answer: B, D. > 모두는 같은 급여를 받고 부서에서 가장 높은 소득을 가진 두 명의 직원이있을 수 있으므로 필요한 결과를 제공하지 않습니다. 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. 단일 행 하위 쿼리는 외부 쿼리의 SELECT 절에 중첩 될 수도 있습니다. 이 경우 하위 쿼리가 반환하는 값은 외부 쿼리가 생성하는 모든 출력 행에 사용할 수 있습니다. 일반적으로이 기술은 하위 쿼리에서 생성 된 값으로 계산을 수행하는 데 사용됩니다.

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

  1. 이러한 하위 쿼리는 FROM 또는 WHERE 절에서 사용되는 것과 모든 측면에서 동일합니다.
  2. 이러한 하위 쿼리는 반드시 단일 행 하위 쿼리 여야합니다.
  3. 이러한 하위 쿼리를 작성할 때 다중 행 연산자를 사용할 수 있습니다.
  4. 해당 사항 없음

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. 각 부서의 시스템 날짜와 최대 급여를 제공합니다.
  2. 모든 부서에 최대 급여를 제공합니다.
  3. ORA 오류가 발생합니다.
  4. 0 행으로 성공적으로 실행됩니다.

Answer: C. 다중 행 하위 쿼리는 SQL 문의 SELECT 절에서 사용할 수 없습니다. 단일 행 하위 쿼리 만 외부 쿼리의 SELECT 절에 중첩 될 수 있습니다.

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. 질문은 목록이 뒤에 올 때 단순화 된 방식으로 ALL 절을 보여줍니다.

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. 질문은 하위 쿼리가 뒤에 올 때 단순화 된 방식으로 ALL 절을 보여줍니다.

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. '<= ANY'를 사용하는 동안 사용되는 NOT 연산자는 하위 쿼리에서 반환 된 결과를 부정하는 데 사용됩니다.

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. A 또는 B 중 하나
  4. 해당 사항 없음

Answer: B. 상관 하위 쿼리는 외부 쿼리의 열을 참조하고 외부 쿼리의 모든 행에 대해 한 번씩 하위 쿼리를 실행하며 EXISTS 연산자는 관계 또는 링크가 있는지 여부를 테스트하는 데 사용됩니다. 상관되지 않은 하위 쿼리는 먼저 하위 쿼리를 실행하고 값을 외부 쿼리에 전달합니다.

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. 질문은 목록이 뒤에 올 때 간단한 방식으로 ANY 절을 보여줍니다.

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. 질문은 하위 쿼리가 뒤따를 때 간단한 방식으로 ANY 절을 보여줍니다.

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. EXISTS 연산자는 ANY 연산자를 대체 할 수 있습니다. 상관 하위 쿼리는 외부 쿼리의 열을 참조하고 외부 쿼리의 모든 행에 대해 한 번씩 하위 쿼리를 실행하며 EXISTS 연산자는 관계 또는 링크가 있는지 여부를 테스트하는 데 사용됩니다.

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 행
  2. 행 없음
  3. A 또는 B 중 하나
  4. 해당 사항 없음

Answer: B. 하위 쿼리가 0 개의 행을 반환하면 '> ANY'조건이 FALSE로 평가되므로 "행 없음"이 반환됩니다.

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

  1. 내부 쿼리는 외부 쿼리에 반환 된 값을 참조해야합니다.
  2. 내부 쿼리에서 반환 된 값은 외부 쿼리의 그룹화 된 데이터와 비교됩니다.
  3. 하위 쿼리는 외부 쿼리에 둘 이상의 값을 반환합니다.
  4. 위의 어느 것도 없습니다. 하위 쿼리는 외부 쿼리의 HAVING 절에서 사용할 수 없습니다.

Answer: B. HAVING 절은 쿼리의 그룹 결과를 특정 조건에 따라 제한해야 할 때 사용됩니다. 하위 쿼리의 결과를 그룹 함수와 비교해야하는 경우 외부 쿼리의 HAVING 절에 내부 쿼리를 중첩해야합니다.