Podzapytania do rozwiązywania pytań zapytań

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

  1. Zamówione podzapytania
  2. Zgrupowane podzapytania
  3. Zapytania podrzędne w jednym wierszu
  4. Żadne z powyższych

Answer: C. Podzapytanie to kompletne zapytanie zagnieżdżone w klauzuli SELECT, FROM, HAVING lub WHERE innego zapytania. Podzapytanie musi być zawarte w nawiasach i zawierać co najmniej klauzule SELECT i FROM. Zapytania podrzędne w jednym wierszu i zapytania podrzędne w wielu wierszach to główne rodzaje zapytań podrzędnych

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

  1. Wykonywane są po wykonaniu głównego zapytania
  2. Wykonywane są równolegle do głównego zapytania
  3. Użytkownik może wykonać zapytanie główne, a następnie w razie potrzeby wykonać zapytanie podrzędne
  4. Wykonywane są przed wykonaniem głównego zapytania.

Answer: D. Zapytanie podrzędne jest zawsze wykonywane przed wykonaniem zapytania głównego. Podpytania są wypełniane jako pierwsze, a wynik podzapytania jest używany jako dane wejściowe dla zapytania zewnętrznego.

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

  1. Wynik zapytania podrzędnego jest zwykle ignorowany podczas wykonywania.
  2. Wynik zapytania podrzędnego nie daje wyniku, jest po prostu pomocny w przyspieszeniu wykonania głównego zapytania
  3. Wynik zapytania podrzędnego jest używany przez zapytanie główne.
  4. Wynik zapytania podrzędnego ma zawsze wartość NULL

Answer: C. Podzapytania są wypełniane jako pierwsze. Wynik podzapytania jest używany jako dane wejściowe dla zapytania zewnętrznego.

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

  1. SELECT
  2. WHERE
  3. ZAMÓW PRZEZ
  4. GRUPUJ WEDŁUG

Answer: A. Zapytanie podrzędne jest takie samo, jak każde inne zapytanie, które musi zaczynać się od klauzuli SELECT. Są zawarte w zewnętrznym zapytaniu.

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

  1. Korzystając z JOINS
  2. Korzystając z klauzuli WHERE
  3. Korzystając z klauzuli GROUP BY
  4. Pisząc instrukcję SELECT osadzoną w klauzuli innej instrukcji SELECT

Answer: D. Podzapytanie to kompletne zapytanie zagnieżdżone w klauzuli SELECT, FROM, HAVING lub WHERE innego zapytania. Podzapytanie musi być zawarte w nawiasach i zawierać co najmniej klauzule SELECT i FROM.

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

  1. Kiedy musimy podsumować wartości
  2. Kiedy musimy zamienić wartości znaków na wartości daty lub liczby
  3. Kiedy musimy wybrać wiersze z tabeli z warunkiem, który zależy od danych z tej samej lub innej tabeli.
  4. Żadne z powyższych

Answer: C.

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

  1. HAVING
  2. WHERE
  3. FROM
  4. Wszystkie powyższe

Answer: D. Zapytanie podrzędne nie różni się od zwykłego zapytania. Może korzystać ze wszystkich podstawowych klauzul instrukcji SELECT.

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

  1. >=
  2. <
  3. =
  4. Wszystkie powyższe

Answer: D. Operatory jednowierszowe obejmują =,>, <,> =, <= i <>.

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

  1. IN
  2. ANY
  3. ALL
  4. Wszystkie powyższe

Answer: D. Podzapytania wielowierszowe zwracają więcej niż jeden wiersz wyników. Operatory, których można używać z podzapytaniami wielowierszowymi, to IN, ALL, ANY i EXISTS.

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

  1. Pozostaje w pamięci podręcznej bufora
  2. Pozostaje wewnątrz zapytania podrzędnego i może być później użyte, gdy zajdzie taka potrzeba
  3. Służy do uzupełniania zewnętrznego (głównego) zapytania
  4. Zarówno A, jak i C

Answer: C. Podzapytania są wypełniane jako pierwsze. Wynik podzapytania jest używany jako dane wejściowe dla zapytania zewnętrznego.

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. Żadne z powyższych

Answer: A. W opcji „A” wewnętrzne zapytanie podrzędne podaje wynagrodzenie wiceprezesa jako wynik zapytania zewnętrznego.

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

  1. Zapytania podrzędne można zapisywać po dowolnej stronie operatora porównania
  2. Nawiasy nie są obowiązkowe w przypadku zapytań podrzędnych
  3. W zapytaniach podrzędnych w jednym wierszu można używać operatorów wielorzędowych, ale odwrotnie nie jest to możliwe
  4. Wszystkie powyższe

Answer: A. Zapytania podrzędne można umieszczać po lewej lub prawej stronie operatora porównania, w zależności od wcięcia zapytania i użyteczności.

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. Działa skutecznie, dając pożądane rezultaty
  2. Działa pomyślnie, ale nie daje oczekiwanych rezultatów
  3. Zgłasza błąd ORA
  4. Wykonuje się pomyślnie i podaje dwie wartości dla każdego wiersza uzyskanego w zestawie wyników

Answer: C. Operatorów wielorzędowych nie można używać w zapytaniach podrzędnych jednorzędowych i odwrotnie.

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

  1. Dają jeden wynik z głównego zapytania
  2. Dają tylko jeden wiersz w zestawie wyników
  3. Zwracają tylko jeden wiersz z wewnętrznej instrukcji SELECT
  4. Dają wiele wierszy z głównego (zewnętrznego) zapytania

Answer: C. Podzapytanie jednorzędowe może zwrócić maksymalnie jedną wartość.

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

  1. Mogą zwrócić więcej niż jedną kolumnę jako wynik zapytania wewnętrznego
  2. Zwracają wiele wierszy w zapytaniu głównym, ale tylko jeden zestaw wyników w zapytaniu wewnętrznym
  3. Zwracają pojedynczy wiersz w zapytaniu głównym, ale wiele wierszy w wewnętrznym zapytaniu podrzędnym
  4. Zwracają więcej niż jeden wiersz z wewnętrznej instrukcji SELECT

Answer: D. Zapytania podrzędne wielokolumnowe zwracają więcej niż jedną kolumnę w swoim zestawie wyników, zapytania podrzędne z wieloma wierszami zwracają więcej niż jeden wiersz z zapytania wewnętrznego.

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

  1. Zwracają tylko jeden wiersz
  2. Używają operatorów jednorzędowych
  3. Zarówno a jak i B
  4. Żadne z powyższych

Answer: C.

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

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

Answer: A. Operatory jednowierszowe obejmują =,>, <,> =, <= i <>. Operatory wielorzędowe, których można używać z podzapytaniami wielowierszowymi, obejmują IN, ALL, ANY i 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” jest bardziej odpowiednie niż „C”, ponieważ filtruje według identyfikatora pracownika, który jest unikalny i zapewnia, że ​​zapytanie podrzędne zwróci tylko jeden wiersz. „C” może się nie powieść, jeśli jest więcej niż jeden pracownik o tym samym imieniu i nazwisku.

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. W jednej instrukcji SQL można zapisać więcej niż jedno zapytanie podrzędne, aby dodać więcej niż jeden warunek.

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

  1. Zapytanie podrzędne w jednym wierszu
  2. Zapytanie podrzędne z wieloma wierszami
  3. Zarówno a jak i B
  4. Wbudowane zapytanie podrzędne

Answer: A. Podane powyżej pytania 18. i 19. demonstrują podzapytania dotyczące użycia w instrukcji SELECT.

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

ja. Zapytania wewnętrzne mogą pobierać dane tylko z jednej tabeli

ii. Zapytania wewnętrzne mogą pobierać dane z więcej niż jednej tabeli

Które z powyższych stwierdzeń są prawdziwe?

  1. (i)
  2. (ii)
  3. Zarówno (i), jak i (ii)
  4. Ani (i), ani (ii)

Answer: B. Zapytania podrzędne mogą pobierać dane z więcej niż jednej tabeli.

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. Realizuje z sukcesem i zapewnia pracownikom wynagrodzenie równe maksymalnemu wynagrodzeniu.
  2. Wykonuje się pomyślnie, ale nie daje wymaganych wyników
  3. Zgłasza błąd, ponieważ funkcja grupy jest używana w zapytaniu podrzędnym
  4. Zgłasza błąd, ponieważ zapytanie podrzędne w jednym wierszu powinno zawierać operator wielu wierszy

Answer: A. Funkcji grupy można używać w zapytaniu podrzędnym.

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. Wykonuje pomyślnie i nadaje imiona i nazwiska oraz minimalne wynagrodzenie większe niż dział 100 wszystkich pracowników
  2. Realizuje z sukcesem i zapewnia pensje pracownikom działu 100
  3. Wykonuje z powodzeniem i podaje nazwiska oraz minimalne wynagrodzenia wszystkich pracowników.
  4. Zgłasza błąd.

Answer: A. Klauzula HAVING może być używana w zapytaniach podrzędnych, jak pokazano

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. Zapytania podrzędne mogą wykorzystywać funkcje grupowe i klauzulę HAVING w celu ograniczenia grup.

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. Klauzula GROUP BY nie jest wymagana w zapytaniu podrzędnym
  2. W instrukcji SELECT podrzędnej kwerendy nie można użyć funkcji
  3. Jedno wierszowe zapytanie podrzędne daje wiele rekordów
  4. Użycie operatora „=” jest nieprawidłowe; operator IN będzie działał poprawnie

Answer: C, D. Klauzula GROUP BY podaje minimalną wartość prowizji dla każdego działu, a zatem wiele wyników jest pobieranych do głównego zapytania, co powoduje błąd.

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. Zapytanie wywołuje błąd ORA, ponieważ zapytanie podrzędne jest nieprawidłowe.

Answer: C. Ponieważ w firmie nie ma pracownika o identyfikatorze job_id „XX”, kwerenda podrzędna nie zwraca żadnego wyniku, który po zrównaniu z job_id w zapytaniu głównym daje 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. Błąd ORA

Answer: D. Wykonanie zapytania wywołuje wyjątek „ORA-01427: podzapytanie jednorzędowe zwraca więcej niż jeden wiersz”.

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

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

Answer: B. Podzapytania wielowierszowe zwracają więcej niż jeden wiersz wyników. Operatory, których można używać z podzapytaniami wielowierszowymi, to IN, ALL, ANY i EXISTS. Operatory wielorzędowe IN, ANY, ALL muszą być używane z operatorami jednorzędowymi, jak pokazano w opcji 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. Operatory wielorzędowe zwracają wyniki logiczne. Ponieważ są wyniki wynagrodzenia w dziale 100, zwraca PRAWDA. Jeśli jest 0 wyników, przyjmuje wartość FALSE.

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

  1. Wykonuje się pomyślnie, dając jeden wynik
  2. Z powodzeniem realizuje wypłaty wynagrodzeń wszystkich pracowników
  3. NULL
  4. Zgłasza błąd ORA

Answer: D. Jeśli dział 100 ma jeden wynik (jednorzędowe zapytanie podrzędne), operator <ANY podaje błąd, ponieważ jest to operator wielorzędowy.

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

  1. Oracle potraktuje każdą wartość wynagrodzenia zwróconą z zapytania podrzędnego tak samo, jak w przypadku operatora IN
  2. Nie będzie różnicy w wynikach
  3. Wyniki będą się różnić
  4. Wykonanie spowoduje błąd ORA

Answer: A. = ANY operator jest odpowiednikiem operatora IN.

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

  1. Podaje maksymalną wartość wynagrodzenia
  2. Podaje minimalną wartość wynagrodzenia
  3. Oznacza to, że podaje wartości mniejsze niż najwyższe
  4. Żadne z powyższych

Answer: C. Operator wielu wierszy <ANY oblicza instrukcje „Mniejsze niż maksimum” podzapytania. '> ALL' Więcej niż najwyższa wartość zwrócona przez podzapytanie. „<ALL” Mniejsza niż najniższa wartość zwrócona przez podzapytanie. „<ANY” Mniejsza niż najwyższa wartość zwrócona przez podzapytanie. „<ANY” Więcej niż najniższa wartość zwrócona przez podzapytanie. „= ANY” Równe dowolnej wartości zwróconej przez podzapytanie (tak samo jak IN). Wiersz „[NIE] ISTNIEJE” musi odpowiadać wartości w podzapytaniu

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

  1. Daje maksymalne wynagrodzenie
  2. Znajduje tylko maksymalną pensję z zapytania podrzędnego
  3. Daje więcej niż minimalne wynagrodzenie
  4. Daje minimalne wynagrodzenie

Answer: C. Operator wielowierszowy> ANY daje w wyniku instrukcje „Większe niż minimum” podzapytania. '> ALL' Więcej niż najwyższa wartość zwrócona przez podzapytanie. „<ALL” Mniejsza niż najniższa wartość zwrócona przez podzapytanie. „<ANY” Mniejsza niż najwyższa wartość zwrócona przez podzapytanie. '> ANY' Więcej niż najniższa wartość zwrócona przez podzapytanie. „= ANY” Równe dowolnej wartości zwróconej przez podzapytanie (tak samo jak IN). Wiersz „[NIE] ISTNIEJE” musi odpowiadać wartości w podzapytaniu

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

Która z poniższych klauzul WHERE jest równoważna z podaną w powyższym zapytaniu? (Załóżmy, że pensje wynoszą 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. Gdy używany jest operator IN, Oracle traktuje poszczególne wyniki zapytania podrzędnego, jak pokazano w opcji 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. <WSZYSTKO oznacza mniej niż minimum. '> ALL' Więcej niż najwyższa wartość zwrócona przez podzapytanie. „<ALL” Mniejsza niż najniższa wartość zwrócona przez podzapytanie. „<ANY” Mniejsza niż najwyższa wartość zwrócona przez podzapytanie. '> ANY' Więcej niż najniższa wartość zwrócona przez podzapytanie. „= ANY” Równe dowolnej wartości zwróconej przez podzapytanie (tak samo jak IN). Wiersz „[NIE] ISTNIEJE” musi odpowiadać wartości w podzapytaniu

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. Wykona się pomyślnie, dając ten sam wynik.
  2. Wystąpi błąd ORA
  3. Wykona pomyślnie, ale poda dane pracowników, którzy mają niższe pensje niż wszyscy pracownicy z job_id „FI_ACCOUNTANT”.
  4. Żadne z powyższych

Answer: C. > WSZYSTKO oznacza mniej niż minimum. '> ALL' Więcej niż najwyższa wartość zwrócona przez podzapytanie. „<ALL” Mniejsza niż najniższa wartość zwrócona przez podzapytanie. „<ANY” Mniejsza niż najwyższa wartość zwrócona przez podzapytanie. '> ANY' Więcej niż najniższa wartość zwrócona przez podzapytanie. „= ANY” Równe dowolnej wartości zwróconej przez podzapytanie (tak samo jak IN). Wiersz „[NIE] ISTNIEJE” musi odpowiadać wartości w podzapytaniu

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. NIE można używać z operatorami wielorzędowymi IN, ANY i ALL.

Sprawdź podaną strukturę tabeli. Rozważ poniższe pytanie i odpowiedz na kolejne pytania 38 i 39. Musisz znaleźć pracowników, którzy nie mają podlegających im podwładnych. (Załóżmy, że oczekiwanych wyników jest 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. Błąd ORA
  4. 0

Answer: D. Jedna z wartości w wewnętrznym zapytaniu podrzędnym to NULL (wszyscy pracownicy nie są menedżerami!)

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. Jeśli zapytanie podrzędne prawdopodobnie będzie miało wartości NULL, nie używaj operatora NOT IN lub, jeśli używasz, zmodyfikuj zapytanie podrzędne za pomocą dodatkowej klauzuli WHERE (opcja D)

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

  1. Zapytania podrzędne muszą być wykonywane oddzielnie od zapytań głównych
  2. Zapytania podrzędne mogą być wykonywane na życzenie użytkownika, nie są one związane z wykonaniem głównego zapytania
  3. Zapytania podrzędne są równe dwóm zapytaniom sekwencyjnym, w których wyniki zapytania wewnętrznego są używane przez zapytanie główne
  4. Wszystkie powyższe

Answer: C.

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

  1. Zapytanie podrzędne może zwrócić 0 lub więcej wierszy
  2. Zapytanie podrzędne może być używane tylko w klauzuli SELECT
  3. Zagnieżdżanie zapytań podrzędnych jest ograniczone do 2 poziomów
  4. Funkcji grupowych nie można używać w zapytaniach podrzędnych

Answer: A. Podzapytanie to kompletne zapytanie zagnieżdżone w klauzuli SELECT, FROM, HAVING lub WHERE innego zapytania. Podzapytanie musi być zawarte w nawiasach i zawierać co najmniej klauzulę SELECT i FROM. Podzapytanie jednorzędowe może zwrócić maksymalnie jedną wartość. Podzapytania wielokolumnowe zwracają więcej niż jedną kolumnę do zapytania zewnętrznego.

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)

Rozważmy następujące zapytanie.

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

Ta kwerenda zwraca błąd. Jaki jest powód błędu?

  1. Użyty operator NOT IN jest nieprawidłowy
  2. Klauzula WHERE w zapytaniu podrzędnym jest niepoprawnie zapisana
  3. Kolumna w klauzuli SELECT zapytania podrzędnego powinna być tylko jedna, gdy w głównym zapytaniu występuje nierówność
  4. Zapytanie podrzędne używa tej samej tabeli co zapytanie główne

Answer: C. Kolumny wybrane w zapytaniu podrzędnym powinny być takie same, jak po drugiej stronie operatora porównania. Każda nierówność typu danych lub liczby kolumn spowodowałaby błąd 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 obsługuje zagnieżdżanie zapytań do 255 poziomów.

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. Korzystanie z GROUP BY
  2. Korzystanie z zapytań podrzędnych
  3. Korzystanie z HAVING
  4. Żadne z powyższych

Answer: D. Może się zdarzyć, że zapytania podrzędne dadzą wynik NULL, co spowoduje 0 wierszy w wyniku głównym; stąd dobrą praktyką jest używanie ich tylko wtedy, gdy wiemy, jakich wartości potrzebujemy.

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

Jaki będzie wynik tej zmiany?

  1. Wyniki będą takie same
  2. Podczas wykonywania wystąpił błąd ORA
  3. Wyniki będą się różnić
  4. Zapytanie zostanie pomyślnie wykonane, dając 0 wierszy.

Answer: B. Zapytanie podrzędne daje więcej niż jeden wynik dla danej zmiany, dlatego operator wielowierszowy powinien zastąpić „=” w głównym zapytaniu podanym powyżej.

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

Musisz wyświetlić nazwiska pracowników, którzy mają najwyższe wynagrodzenie. Które z poniższych instrukcji SQL będą poprawne?

  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. Zapytania podrzędne można zapisać po dowolnej stronie operatora

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

  1. Zapytanie podrzędne w jednym wierszu
  2. Zapytanie podrzędne z wieloma wierszami
  3. Widok wbudowany
  4. Powiązane zapytanie podrzędne

Answer: C. Jeśli zapytanie podrzędne pojawia się w klauzuli FROM instrukcji SELECT, tworzy widok wbudowany. Oracle wewnętrznie tworzy tymczasowy widok do wykonania zapytania.

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. Ponieważ nie ma ograniczenia liczby tabel, które można łączyć, nie ma ograniczeń co do liczby widoków wbudowanych w zapytaniu.

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

  1. Tabele używane w zapytaniu głównym są również używane w pokrewnym zapytaniu podrzędnym
  2. Zapytania podrzędne, które odwołują się do kolumny używanej w zapytaniu głównym, nazywane są zapytaniami podrzędnymi pokrewnymi
  3. Zapytania podrzędne, które są zapisywane bez nawiasów, nazywane są zapytaniami podrzędnymi pokrewnymi
  4. Zapytania podrzędne, które obowiązkowo używają innych tabel niż te używane w zapytaniu głównym, nazywane są zapytaniami podrzędnymi powiązanymi

Answer: B. Skorelowane podzapytanie odwołuje się do kolumny w zewnętrznym zapytaniu i wykonuje podzapytanie raz dla każdego wiersza w zewnętrznym zapytaniu, podczas gdy Nieskorelowane podzapytanie wykonuje najpierw podzapytanie i przekazuje wartość do zewnętrznego zapytania.

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

  1. SELECT
  2. GRUPUJ WEDŁUG
  3. UPDATE
  4. DELETE

Answer: B. Pozostałe opcje mogą znajdować się w zapytaniu głównym (zapytaniu nadrzędnym) zapytania podrzędnego.

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

  1. Jest oceniana tylko raz dla zapytania nadrzędnego
  2. Dla zapytania nadrzędnego jest oceniana tylko trzykrotnie
  3. Jest oceniana raz dla każdego wiersza przetwarzanego przez nadrzędne zapytanie podrzędne
  4. Wszystkie powyższe

Answer: C. Skorelowane podzapytanie odwołuje się do kolumny w zapytaniu zewnętrznym i wykonuje podzapytanie raz dla każdego wiersza w zapytaniu zewnętrznym; a operator EXISTS służy do testowania, czy relacja lub łącze są obecne.

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. Tutaj uzyskuje się identyfikator działu, który służy do oceny zapytania nadrzędnego i jeśli wynagrodzenie w tym wierszu jest większe niż średnie wynagrodzenie działów w tym wierszu, zwracany jest wynik.

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. Skorelowane podzapytanie odwołuje się do kolumny w zapytaniu zewnętrznym i wykonuje podzapytanie raz dla każdego wiersza w zapytaniu zewnętrznym; a operator EXISTS służy do testowania, czy relacja lub łącze są obecne. Można go użyć do znalezienia zduplikowanych wierszy w tabeli, w której zduplikowanie podlega kolumnie lub zestawowi kolumn.

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. Podzapytanie jednowierszowe można również zagnieżdżać w klauzuli SELECT zapytania zewnętrznego. W takim przypadku wartość zwracana przez podzapytanie jest dostępna dla każdego wiersza danych wyjściowych generowanych przez zapytanie zewnętrzne. Zwykle ta technika jest używana do wykonywania obliczeń z wartością uzyskaną z podzapytania.

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. Gdy w klauzuli FROM zapytania zewnętrznego używane jest podzapytanie z wieloma kolumnami, tworzy ono tymczasową tabelę, do której mogą się odwoływać inne klauzule zapytania zewnętrznego. Ta tymczasowa tabela jest bardziej formalnie nazywana widokiem wbudowanym. Wyniki podzapytania są traktowane jak każda inna tabela w klauzuli FROM. Jeśli tymczasowa tabela zawiera zgrupowane dane, zgrupowane podzbiory są traktowane jako oddzielne wiersze danych w tabeli.

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)

Rozważ następujące pytanie i odpowiedz na kolejne pytania od 59 do 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 );

Jaki będzie wynik tej zmiany? (Wybierz najbardziej odpowiednią odpowiedź)

  1. Porządkuje identyfikator działu pobrany z zapytania podrzędnego i wyświetla je w porządku rosnącym
  2. Spowoduje to wyświetlenie błędu ORA, ponieważ klauzuli ORDER BY powinna towarzyszyć klauzula GROUP BY
  3. Spowoduje to zgłoszenie błędu ORA, ponieważ klauzula ORDER BY nie może zostać użyta w zapytaniu podrzędnym
  4. To się powiedzie.

Answer: C. Podzapytanie, z wyjątkiem jednego w klauzuli FROM, nie może mieć klauzuli ORDER BY.Jeśli chcesz wyświetlić dane wyjściowe w określonej kolejności, dołącz klauzulę ORDER BY jako ostatnią klauzulę zapytania zewnętrznego.

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;

Jaki będzie wynik tej zmiany? (Wybierz najbardziej odpowiednią odpowiedź)

  1. Porządkuje identyfikator działu pobrany z zapytania podrzędnego i wyświetla je w porządku rosnącym
  2. Porządkuje identyfikator działu pobrany z zapytania podrzędnego i wyświetla je w porządku malejącym
  3. Spowoduje to zgłoszenie błędu ORA, ponieważ klauzula ORDER BY nie może zostać użyta w zapytaniu podrzędnym
  4. Żadne z powyższych

Answer: D. Podzapytanie, z wyjątkiem jednego w klauzuli FROM, nie może mieć klauzuli ORDER BY.Jeśli chcesz wyświetlić dane wyjściowe w określonej kolejności, dołącz klauzulę ORDER BY jako ostatnią klauzulę zapytania zewnętrznego.

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

  1. ZAMÓW PRZEZ
  2. HAVING
  3. GRUPUJ WEDŁUG
  4. Wszystkie powyższe

Answer: C. Domyślnie klauzula GROUP BY wykonuje porządkowanie w zapytaniu podrzędnym.

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

Rozważmy następujące zapytanie:

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. Daje wszystkie AU_ID i AU_TITLE zaczynające się na literę „S%”
  2. Daje wszystkie AU_ID i AU_TITLE zaczynające się od litery „S%” uporządkowane według tytułów w kolejności rosnącej
  3. Zgłasza błąd ORA
  4. Zwraca wartość 0

Answer: C. Kolumny z CLOB, BLOB, NCLOB lub ARRAY nie można użyć w zapytaniu podrzędnym.

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

Ta kwerenda zwraca błąd. Jaki jest powód błędu?

  1. Należy użyć klauzuli GROUP BY, ponieważ używana jest funkcja MAX
  2. Oba zapytania podrzędne nie mogą używać tego samego identyfikatora działu w tym samym zapytaniu zewnętrznym
  3. Operator BETWEEN nie może być używany z zapytaniem podrzędnym
  4. Klauzula SELECT powinna zawierać kolumny, a nie gwiazdkę (*)

Answer: C. Operator BETWEEN może być używany w zapytaniu podrzędnym, ale nie w zapytaniu podrzędnym.

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

  1. NOT IN ignoruje wszystkie wartości NULL i podaje tylko wartości NOT NULL
  2. NOT IN umieszcza wszystkie wartości NULL na końcu i daje NOT NULL do wyświetlenia jako pierwsze
  3. Nie należy używać opcji NOT IN, jeśli w zestawie wyników oczekiwana jest wartość NULL
  4. NOT IN jest po prostu zaprzeczeniem operatora IN i można go zmienić bez żadnych zastrzeżeń.

Answer: C. SQL obsługuje wartości NULL w inny sposób i dlatego dobrą praktyką jest unikanie NOT IN, jeśli zestaw wynikowy może zawierać wartość 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. Podzapytania wielowierszowe zwracają więcej niż jeden wiersz wyników. Operatory, których można używać z podzapytaniami wielowierszowymi, obejmują IN, ALL, ANY i EXISTS. Podzapytania wielokolumnowe zwracają więcej niż jedną kolumnę do zapytania zewnętrznego. Kolumny danych są przekazywane do zewnętrznego zapytania w tej samej kolejności, w jakiej są wymienione w klauzuli SELECT podzapytania.

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. Podzapytania wielowierszowe zwracają więcej niż jeden wiersz wyników. Operatory, których można używać z podzapytaniami wielowierszowymi, obejmują IN, ALL, ANY i EXISTS. Podzapytania wielokolumnowe zwracają więcej niż jedną kolumnę do zapytania zewnętrznego. Kolumny danych są przekazywane do zewnętrznego zapytania w tej samej kolejności, w jakiej są wymienione w klauzuli SELECT podzapytania.

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. Operator EXISTS służy do sprawdzania i dopasowywania rekordów między zapytaniami. Zwraca wartość BOOLEAN. Skorelowane podzapytanie odwołuje się do kolumny w zapytaniu zewnętrznym i wykonuje podzapytanie raz dla każdego wiersza w zapytaniu zewnętrznym; a operator EXISTS służy do testowania, czy relacja lub łącze są obecne. Podzapytanie nieskorelowane wykonuje najpierw podzapytanie i przekazuje wartość do zapytania zewnętrznego.

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. NIE ISTNIEJE jest operatorem negacji dla 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 to pseudokolumna używana do znajdowania wyników n-tego rzędu.

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. Instrukcja spowodowałaby błąd ORA
  2. Instrukcja zwróciłaby wszystkie wiersze w tabeli
  3. Instrukcja zwróciłaby NULL jako wynik wyjściowy.
  4. Instrukcja nie zwróci żadnych wierszy w wyniku.

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. Ważne są kolumny wybrane w zapytaniach podrzędnych
  2. Zapytanie wewnętrzne powinno zwracać wiersze, każdy wynik jest ważny, a nie to, co jest WYBRANE
  3. Zarówno a jak i B
  4. Ani A, ani B.

Answer: B.

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

  1. Zwraca wiersze, które pasują do wszystkich wartości z listy / zapytania podrzędnego
  2. Zwraca wiersze pasujące do pierwszych 5 wartości z listy / zapytania podrzędnego
  3. Zwraca wiersze pasujące do dowolnej wartości z listy / zapytania podrzędnego
  4. Zwraca wartość 0, gdy wszystkie wiersze pasują do listy / zapytania podrzędnego

Answer: C.

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

  1. Zwraca wiersze, które pasują do wszystkich wartości z listy / zapytania podrzędnego
  2. Zwraca wiersze, które pasują tylko do niektórych wartości z listy / zapytania podrzędnego
  3. Zwraca wiersze tylko wtedy, gdy wszystkie wartości pasują do listy / zapytania podrzędnego
  4. Wszystkie powyższe

Answer: C. '> ALL' Więcej niż najwyższa wartość zwrócona przez podzapytanie. „<ALL” Mniejsza niż najniższa wartość zwrócona przez podzapytanie. „<ANY” Mniejsza niż najwyższa wartość zwrócona przez podzapytanie. '> ANY' Więcej niż najniższa wartość zwrócona przez podzapytanie. „= ANY” Równe dowolnej wartości zwróconej przez podzapytanie (tak samo jak IN). Wiersz „[NIE] ISTNIEJE” musi odpowiadać wartości w podzapytaniu.

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

  1. Można ich używać w klauzuli INSERT bez żadnych ograniczeń
  2. Można ich używać w klauzuli INSERT tylko dla wartości liczbowych
  3. Lista SELECT zapytania podrzędnego powinna być taka sama, jak lista kolumn instrukcji INSERT.
  4. Żadne z powyższych

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. Żadne z powyższych

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

Co można powiedzieć o tych dwóch stwierdzeniach?

  1. Oba zapytania powinny generować ten sam wynik.
  2. Oba zapytania spowodują wyświetlenie błędu.
  3. Jeśli istnieją dwa działy o tej samej nazwie, oba zapytania zakończą się niepowodzeniem.
  4. Oba zapytania zostaną pomyślnie uruchomione, nawet jeśli istnieje więcej niż jeden dział o nazwie „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);

Jaki będzie wynik powyższego zapytania?

  1. Wykonuje się pomyślnie i daje wymagane rezultaty
  2. Wykonuje się pomyślnie, ale nie daje wymaganych wyników
  3. Podczas wykonywania generuje błąd ORA
  4. Wykonuje się pomyślnie i daje wymagany wynik, gdy> ALL zostanie zastąpione przez> = ALL

Answer: B, D. > ALL nie da wymaganego wyniku, ponieważ może być dwóch pracowników o tej samej pensji i którzy są najwyżej zarabiającymi w dziale 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. Podzapytanie jednowierszowe można również zagnieżdżać w klauzuli SELECT zapytania zewnętrznego. W takim przypadku wartość zwracana przez podzapytanie jest dostępna dla każdego wiersza danych wyjściowych generowanych przez zapytanie zewnętrzne. Zwykle ta technika jest używana do wykonywania obliczeń z wartością uzyskaną z podzapytania.

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

  1. Te zapytania podrzędne są takie same we wszystkich aspektach, jak te używane w klauzulach FROM lub WHERE
  2. Te zapytania podrzędne muszą obowiązkowo być jednorzędowymi zapytaniami podrzędnymi
  3. Podczas pisania takich pod-zapytań możemy używać operatorów wielorzędowych
  4. Żadne z powyższych

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. Podaje datę systemową i maksymalne wynagrodzenie dla każdego działu
  2. Daje maksymalne wynagrodzenie dla wszystkich działów
  3. Zgłasza błąd ORA
  4. Wykonuje się pomyślnie z 0 wierszami

Answer: C. W klauzuli SELECT instrukcji SQL nie można użyć zapytania podrzędnego z wieloma wierszami. W klauzuli SELECT zapytania zewnętrznego można zagnieżdżać tylko podzapytanie jednowierszowe.

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. Pytanie pokazuje klauzulę ALL w uproszczony sposób, gdy następuje po niej 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. Pytanie pokazuje klauzulę ALL w uproszczony sposób, gdy następuje po niej zapytanie podrzędne

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. Operator NOT używany podczas używania „<= ANY” służy do negacji wyników zwróconych przez zapytanie podrzędne

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. Albo A, albo B.
  4. Żadne z powyższych

Answer: B. Skorelowane podzapytanie odwołuje się do kolumny w zapytaniu zewnętrznym i wykonuje podzapytanie raz dla każdego wiersza w zapytaniu zewnętrznym; a operator EXISTS służy do testowania, czy relacja lub łącze są obecne. Podzapytanie nieskorelowane wykonuje najpierw podzapytanie i przekazuje wartość do zapytania zewnętrznego.

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. Pytanie pokazuje klauzulę ANY w uproszczony sposób, gdy następuje po niej 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. Pytanie pokazuje klauzulę ANY w uproszczony sposób, gdy następuje po niej zapytanie podrzędne

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. Operator EXISTS może zastąpić operator ANY. Skorelowane podzapytanie odwołuje się do kolumny w zapytaniu zewnętrznym i wykonuje podzapytanie raz dla każdego wiersza w zapytaniu zewnętrznym; a operator EXISTS służy do testowania, czy relacja lub łącze są obecne.

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 rząd
  2. Żadnych rzędów
  3. Albo A, albo B.
  4. Żadne z powyższych

Answer: B. Jeśli zapytanie podrzędne zwróci zero wierszy, warunek „> ANY” przyjmuje wartość FALSE, a zatem zwracane jest „Brak wierszy”.

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

  1. Zapytanie wewnętrzne musi odwoływać się do wartości zwróconej do zapytania zewnętrznego.
  2. Wartość zwrócona przez zapytanie wewnętrzne ma zostać porównana z danymi zgrupowanymi w zapytaniu zewnętrznym.
  3. Podzapytanie zwraca więcej niż jedną wartość do zapytania zewnętrznego.
  4. Żadne z powyższych. Podpytań nie można używać w klauzuli HAVING zapytania zewnętrznego.

Answer: B. Klauzula HAVING jest używana, gdy wyniki grupowe zapytania muszą być ograniczone na podstawie jakiegoś warunku. Jeśli wynik podzapytania trzeba porównać z funkcją grupy, należy zagnieździć zapytanie wewnętrzne w klauzuli HAVING zapytania zewnętrznego.