Sottoquery per risolvere le domande delle query
1. Which of the following are the types of sub-queries?
- Sottoquery ordinate
- Sottoquery raggruppate
- Sottoquery a riga singola
- Nessuno dei precedenti
Answer: C. Una sottoquery è una query completa nidificata nella clausola SELECT, FROM, HAVING o WHERE di un'altra query. La sottoquery deve essere racchiusa tra parentesi e avere almeno una clausola SELECT e FROM. Le sottoquery a riga singola e le sottoquery su più righe sono i principali tipi di sottoquery
2.Which of the following is true about sub-queries?
- Vengono eseguiti dopo l'esecuzione della query principale
- Vengono eseguiti in parallelo alla query principale
- L'utente può eseguire la query principale e quindi, se lo desidera, eseguire la sottoquery
- Vengono eseguiti prima dell'esecuzione della query principale.
Answer: D. La sottoquery viene sempre eseguita prima dell'esecuzione della query principale. Le sottoquery vengono completate per prime. Il risultato della sottoquery viene utilizzato come input per la query esterna.
3.Which of the following is true about the result of a sub-query?
- Il risultato di una sottoquery viene generalmente ignorato quando viene eseguito.
- Il risultato di una sottoquery non fornisce un risultato, è solo utile per velocizzare l'esecuzione della query principale
- Il risultato di una sottoquery viene utilizzato dalla query principale.
- Il risultato di una sottoquery è sempre NULL
Answer: C. Le sottoquery vengono completate per prime. Il risultato della sottoquery viene utilizzato come input per la query esterna.
4.Which of the following clause is mandatorily used in a sub-query?
- SELECT
- WHERE
- ORDINATO DA
- RAGGRUPPA PER
Answer: A. Una sottoquery è come qualsiasi altra query che deve iniziare con una clausola SELECT. Sono contenuti in una query esterna.
5. Which of the following is a method for writing a sub-query in a main query?
- Utilizzando JOINS
- Utilizzando la clausola WHERE
- Utilizzando la clausola GROUP BY
- Scrivendo un'istruzione SELECT incorporata nella clausola di un'altra istruzione SELECT
Answer: D. Una sottoquery è una query completa annidata nella clausola SELECT, FROM, HAVING o WHERE di un'altra query. La sottoquery deve essere racchiusa tra parentesi e avere almeno una clausola SELECT e FROM.
6.In the given scenarios, which one would appropriately justify the usage of sub-query?
- Quando abbiamo bisogno di riassumere i valori
- Quando è necessario convertire i valori dei caratteri in valori di data o numerici
- Quando è necessario selezionare righe da una tabella con una condizione che dipende dai dati della stessa tabella o di una diversa.
- Nessuno dei precedenti
Answer: C.
7.In which of the following clauses can a sub-query be used?
- HAVING
- WHERE
- FROM
- Tutti i precedenti
Answer: D. Una sottoquery non è diversa da una normale query. Può utilizzare tutte le clausole primarie di un'istruzione SELECT.
8.Which of the following single-row operators can be used for writing a sub-query?
- >=
- <
- =
- Tutti i precedenti
Answer: D. Gli operatori su riga singola includono =,>, <,> =, <= e <>.
9.Which of the following multi-row operators can be used with a sub-query?
- IN
- ANY
- ALL
- Tutti i precedenti
Answer: D. Le sottoquery su più righe restituiscono più di una riga di risultati. Gli operatori che possono essere utilizzati con le sottoquery su più righe includono IN, ALL, ANY e EXISTS.
10.What is true about the output obtained from a sub-query?
- Rimane nella cache del buffer
- Rimane all'interno della sottoquery e può essere utilizzato in seguito quando necessario
- Viene utilizzato per completare la query esterna (principale)
- Sia A che C
Answer: C. Le sottoquery vengono completate per prime. Il risultato della sottoquery viene utilizzato come input per la query esterna.
11.You need to find the salaries for all the employees who have a higher salary than the Vice President of a company 'ABC'.Which of the following queries will give you the required result? (Consider the table structure as given)
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SELECT first_name, last_name, salary FROM employees WHERE salary > (SELECT salary FROM employees WHERE job_id = 'VICE-PRESIDENT');
SELECT first_name, last_name, salary FROM employees WHERE salary = (SELECT salary FROM employees WHERE job_id = 'VICE-PRESIDENT');
SELECT first_name, last_name, salary FROM employees WHERE job_id = 'VICE-PRESIDENT');
- Nessuno dei precedenti
Answer: A. Nell'opzione "A", la sottoquery interna fornisce lo stipendio del VP come risultato della query esterna.
12.What among the following is true about sub-queries?
- Le sottoquery possono essere scritte su entrambi i lati di un operatore di confronto
- La parentesi non è obbligatoria per le sottoquery
- Le sottoquery su riga singola possono utilizzare operatori su più righe, ma non è possibile viceversa
- Tutti i precedenti
Answer: A. Le sottoquery possono essere posizionate sul lato sinistro o destro dell'operatore di confronto a seconda del rientro della query e dell'usabilità.
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);
- Si esegue con successo dando i risultati desiderati
- Viene eseguito correttamente ma non fornisce i risultati desiderati
- Genera un errore ORA
- Viene eseguito correttamente e fornisce due valori per ogni riga ottenuta nel set di risultati
Answer: C. Gli operatori su più righe non possono essere utilizzati nelle sottoquery su riga singola e viceversa.
14.Which of the following is true about single-row sub-queries?
- Forniscono un risultato dalla query principale
- Danno solo una riga nel set di risultati
- Restituiscono solo una riga dall'istruzione SELECT interna
- Forniscono più righe dalla query principale (esterna)
Answer: C. Una sottoquery a riga singola può restituire un massimo di un valore.
15.What is true about multi-row sub-queries?
- Possono restituire più di una colonna come risultato della query interna
- Restituiscono più righe nella query principale ma solo un singolo set di risultati nella query interna
- Restituiscono una singola riga nella query principale ma più righe nella sottoquery interna
- Restituiscono più di una riga dall'istruzione SELECT interna
Answer: D. Le sottoquery su più colonne restituiscono più di una colonna nel loro set di risultati, le sottoquery su più righe restituiscono più di una riga dalla query interna.
16.What among the following is true about single-row sub-queries?
- Restituiscono solo una riga
- Usano operatori a riga singola
- Sia a che B
- Nessuno dei precedenti
Answer: C.
17.Which of the following operators cannot be used in a sub-query?
- AND
- <
- >
- <>
Answer: A. Gli operatori su riga singola includono =,>, <,> =, <= e <>. Gli operatori su più righe che possono essere utilizzati con sottoquery su più righe includono IN, ALL, ANY e EXISTS.
Examine the exhibit and answer the questions 18 to 21 that follow.
18.You need to find out the names of all employees who belong to the same department as the employee 'Jessica Butcher' who is in department 100 and has an employee ID 40. Which of the following queries will be correct?
SELECT first_name, last_name FROM employees WHERE last_name = 'Butcher' And first_name = 'Jessica';
SELECT first_name, last_name FROM employees WHERE department =100;
SELECT first_name, last_name FROM employees WHERE department = (SELECT department FROM employees WHERE first_name = 'Jessica' AND last_name = 'Butcher');
SELECT first_name, last_name FROM employees WHERE department = (SELECT department FROM employees WHERE first_name = 'Jessica' AND last_name = 'Butcher' AND department = 100 AND employee_id = 40);
Answer: D. "D" è più appropriato di "C" perché filtra sull'ID dipendente che è univoco e garantisce che la sottoquery restituirà solo una singola riga. "C" può fallire se ci sono più dipendenti con lo stesso nome e cognome.
19.You need to find out the employees which belong to the department of 'Jessica Butcher' and have salary greater than the salary of 'Jessica Butcher' who has an employee ID of 40. Which of the following queries will work?
SELECT first_name, last_name FROM employees WHERE last_name = 'Butcher' AND first_name = 'Jessica' AND salary > 10000;
SELECT first_name, last_name FROM employees WHERE department = 100;
SELECT first_name, last_name FROM employees WHERE department = (SELECT department FROM employees WHERE first_name = 'Jessica' AND last_name = 'Butcher' AND employee_id = 40) AND salary > (SELECT salary FROM employees WHERE first_name = 'Jessica' AND last_name = 'Butcher' AND employee_id = 40);
SELECT first_name, last_name FROM employees WHERE department = (SELECT department FROM employees WHERE first_name = 'Jessica' AND last_name = 'Butcher' AND department = 100);
Answer: C. È possibile scrivere più di una sottoquery in un'istruzione SQL per aggiungere più di una condizione.
20.Based on the answers for questions 18th and 19th, what type of sub-queries is used by them?
- Sottoquery su riga singola
- Sottoquery su più righe
- Sia a che B
- Sottoquery in linea
Answer: A. Le domande 18 e 19 sopra riportate dimostrano le sottoquery sull'utilizzo in un'istruzione SELECT.
21.Consider two statements about outer and inner queries in context of SQL sub-queries?
io. Le query interne possono ottenere dati da una sola tabella
ii. Le query interne possono ottenere dati da più di una tabella
Quale delle affermazioni precedenti è vera?
- (i)
- (ii)
- Sia (i) che (ii)
- Né (i) né (ii)
Answer: B. Le sottoquery possono recuperare i dati da più di una tabella.
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);
- Esegue con successo e dà ai dipendenti che hanno uno stipendio uguale allo stipendio massimo.
- Viene eseguito correttamente ma non fornisce i risultati richiesti
- Genera un errore poiché una funzione di gruppo viene utilizzata nella sottoquery
- Genera un errore poiché una sottoquery a riga singola deve contenere un operatore a più righe
Answer: A. Una funzione di gruppo può essere utilizzata all'interno di una sottoquery.
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);
- Viene eseguito con successo e fornisce i nomi e lo stipendio minimo superiore al reparto 100 di tutti i dipendenti
- Esegue con successo e fornisce gli stipendi dei dipendenti nel dipartimento 100
- Esegue con successo e fornisce i nomi e gli stipendi minimi di tutti i dipendenti.
- Genera un errore.
Answer: A. La clausola HAVING può essere utilizzata nelle sottoquery come mostrato
24.You need to find the job which has a maximum average salary.Which of the following queries will give you the required results?
SELECT job_id, avg(salary) FROM employees GROUP BY job_id;
SELECT job_id, avg(salary) FROM employees GROUP BY job_id HAVING job_id in (SELECT max(avg(salary) FROM employees);
SELECT job_id, avg(salary) FROM employees GROUP BY job_id HAVING max(avg(salary) in (SELECT max(avg(salary) FROM employees);
SELECT job_id, avg(salary) FROM employees GROUP BY job_id HAVING avg(salary) in (SELECT max(avg(salary) FROM employees GROUP BY job_id);
Answer: D. Le sottoquery possono utilizzare le funzioni di gruppo e la clausola HAVING per limitare i gruppi.
25.The following query throws an error. Choose the correct reason for the error as given in the options.
SELECT first_name, last_name
FROM employees
WHERE commission_pct = (SELECT min(commission_pct )
FROM employees
GROUP BY department_id);
- La clausola GROUP BY non è richiesta nella sottoquery
- Una funzione non può essere utilizzata in un'istruzione SELECT di sottoquery
- La sottoquery a riga singola fornisce più record
- L'utilizzo dell'operatore "=" non è valido; un operatore IN funzionerà correttamente
Answer: C, D. La clausola GROUP BY fornisce il commission_pct minimo per ogni dipartimento e quindi più risultati vengono recuperati dalla query principale dando un errore.
26.Consider the query given below.How many records will be returned as a result of the above query? (Assuming the no employee with job id XX exists in the company)
SELECT first_name, last_name
FROM employees
WHERE salary = (SELECT salary
FROM employees
WHERE job_id = 'XX');
- 1
- NULL
- 0
- La query genera un errore ORA perché la sottoquery non è valida.
Answer: C. Poiché nell'azienda non è presente alcun dipendente con job_id "XX", la sottoquery non restituisce alcun risultato, che quando equivale a job_id nella query principale fornisce uno 0.
27.What happens if the WHERE condition in the query given in question 26 is replaced with a new one (WHERE job_id IS NOT NULL)? (Assume the number of records in 'employees' table is 14).
- 1
- 14
- 0
- Errore ORA
Answer: D. L'esecuzione della query solleva l'eccezione "ORA-01427: la sottoquery a riga singola restituisce più di una riga".
28.Which of the following are valid multi row operators used for sub-queries?
- <=
- QUALSIASI> =
- !=
- >=
Answer: B. Le sottoquery su più righe restituiscono più di una riga di risultati. Gli operatori che possono essere utilizzati con le sottoquery su più righe includono IN, ALL, ANY e EXISTS. Gli operatori a più righe IN, ANY, ALL devono essere utilizzati con operatori a riga singola come mostrato nell'opzione B.
Examine the table structure as given. Consider the query given below and answer the questions 29 to 33 that follow
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SELECT first_name, last_name, salary, commission_pct
FROM employees
WHERE salary < ANY (SELECT salary
FROM employees
WHERE department_id = 100)
AND department_id <> 101;
29.What does the ANY operator evaluates to in the above query?
- TRUE
- FALSE
- NULL
- 0
Answer: A. Gli operatori su più righe restituiscono risultati booleani. Poiché ci sono risultati di stipendio nel dipartimento 100, restituisce VERO. Se ci sono 0 risultati, restituisce FALSE.
30.What will be the outcome of the query if we assume that the department 100 has only one employee?
- Viene eseguito con successo dando l'unico risultato
- Esegue con successo dando gli stipendi di tutti i dipendenti
- NULL
- Genera un errore ORA
Answer: D. Se il reparto 100 ha un risultato (sottoquery a riga singola), l'operatore <ANY restituisce l'errore in quanto è un operatore a più righe.
31.What will be the outcome of the query given above if the < ANY operator is replaced with = ANY operator?
- Oracle tratterà ogni valore dello stipendio restituito dalla sottoquery come fa con l'operatore IN
- Non ci saranno differenze nei risultati
- I risultati saranno diversi
- L'esecuzione genererà un errore ORA
Answer: A. = QUALSIASI operatore è equivalente all'operatore IN.
32.What can be said about the < ANY operator in the query given above?
- Dà il valore massimo dello stipendio
- Dà il valore minimo dello stipendio
- Significa che fornisce i valori inferiori a quelli più alti
- Nessuno dei precedenti
Answer: C. L'operatore multi riga <ANY restituisce le istruzioni "Minore del massimo" della sottoquery. '> ALL' Più del valore più alto restituito dalla sottoquery. '<TUTTO' Minore del valore più basso restituito dalla sottoquery. '<QUALSIASI' Minore del valore più alto restituito dalla sottoquery. '<QUALSIASI' Più del valore più basso restituito dalla sottoquery. '= ANY' Uguale a qualsiasi valore restituito dalla sottoquery (uguale a IN). La riga "[NOT] EXISTS" deve corrispondere a un valore nella sottoquery
33.Assume that the < ANY operator is replaced with the > ANY. What is true about this operator?
- Dà lo stipendio massimo
- Trova solo lo stipendio massimo dalla sottoquery
- Dà più del salario minimo
- Dà il salario minimo
Answer: C. L'operatore a più righe> ANY restituisce le istruzioni "Maggiore del minimo" della sottoquery. '> ALL' Più del valore più alto restituito dalla sottoquery. '<TUTTO' Minore del valore più basso restituito dalla sottoquery. '<QUALSIASI' Minore del valore più alto restituito dalla sottoquery. '> QUALSIASI' Più del valore più basso restituito dalla sottoquery. '= ANY' Uguale a qualsiasi valore restituito dalla sottoquery (uguale a IN). La riga "[NOT] EXISTS" deve corrispondere a un valore nella sottoquery
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 );
Quale clausola WHERE tra le seguenti è equivalente a quella fornita nella query precedente? (Supponiamo che gli stipendi siano 2500, 3000, 3500,4000)
WHERE salary < ANY (SELECT max(salary) FROM employees GROUP BY department_id );
WHERE salary < ALL (SELECT max(salary) FROM employees GROUP BY department_id );
WHERE salary = (SELECT max(salary) FROM employees GROUP BY department_id );
WHERE salary IN (2500,3000,3500,4000);
Answer: D. Quando viene utilizzato l'operatore IN, Oracle tratta i singoli risultati della sottoquery come mostrato nell'opzione D.
Examine the structure of the EMPLOYEES table as given below and answer the questions 35 to 37 that follow.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
35. You need to find out which of the employees have a salary less than that of the salary for the job ID 'FIN_ACT'. Which of the following queries will give you the required output?
SELECT employee_id, first_name, last_name FROM employees WHERE salary < ALL (SELECT salary FROM employees WHERE job_id = 'FIN_ACT') AND job_id <> 'FIN_ACT';
SELECT employee_id, first_name, last_name FROM employees WHERE salary > ALL (SELECT salary FROM employees WHERE job_id = 'FIN_ACT') AND job_id <> 'FIN_ACT';
SELECT employee_id, first_name, last_name FROM employees WHERE salary < ANY (SELECT salary FROM employees WHERE job_id = 'FIN_ACT') AND job_id <> 'FIN_ACT';
SELECT employee_id, first_name, last_name FROM employees WHERE salary = (SELECT salary FROM employees WHERE job_id = 'FIN_ACT') AND job_id <> 'FIN_ACT';
Answer: A. <TUTTO significa minore del minimo. '> ALL' Più del valore più alto restituito dalla sottoquery. '<TUTTO' Minore del valore più basso restituito dalla sottoquery. '<QUALSIASI' Minore del valore più alto restituito dalla sottoquery. '> QUALSIASI' Più del valore più basso restituito dalla sottoquery. '= ANY' Uguale a qualsiasi valore restituito dalla sottoquery (uguale a IN). La riga "[NOT] EXISTS" deve corrispondere a un valore nella sottoquery
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?
- Verrà eseguito con successo dando lo stesso risultato.
- Verrà generato un errore ORA
- Verrà eseguito correttamente ma fornirà i dettagli dei dipendenti che hanno stipendi inferiori a tutti i dipendenti con job_id "FI_ACCOUNTANT".
- Nessuno dei precedenti
Answer: C. > TUTTO significa meno del minimo. '> ALL' Più del valore più alto restituito dalla sottoquery. '<TUTTO' Minore del valore più basso restituito dalla sottoquery. '<QUALSIASI' Minore del valore più alto restituito dalla sottoquery. '> QUALSIASI' Più del valore più basso restituito dalla sottoquery. '= ANY' Uguale a qualsiasi valore restituito dalla sottoquery (uguale a IN). La riga "[NOT] EXISTS" deve corrispondere a un valore nella sottoquery
37.You need to find the salaries for all employees who are not in the department 100. Which of the following queries will give you the required result?
-
SELECT employee_id, first_name, last_name FROM employees WHERE salary !=ALL (SELECT salary FROM employees WHERE department_id = 100) AND department_id <> 100;
SELECT employee_id, first_name, last_name FROM employees WHERE salary NOT IN (SELECT salary FROM employees WHERE department_id = 100) AND department_id <> 100;
SELECT employee_id, first_name, last_name FROM employees WHERE salary NOT ALL (SELECT salary FROM employees WHERE department_id = 100) AND department_id <> 100;
SELECT employee_id, first_name, last_name FROM employees WHERE salary != (SELECT salary FROM employees WHERE department_id = 100) AND department_id <> 100;
Answer: C. NOT può essere utilizzato con gli operatori multi riga IN, ANY e ALL.
Esaminare la struttura del tavolo come data. Considera la seguente domanda e rispondi alle domande 38 e 39 che seguono. Devi trovare i dipendenti che non hanno un rapporto subordinato per loro. (Supponiamo che ci siano 0 risultati attesi)
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SELECT first_name, last_name
FROM employees
WHERE employee_id NOT IN
(SELECT manager_id
FROM employees);
38.What will be the result of the query given above?
- 10
- NULL
- Errore ORA
- 0
Answer: D. Uno dei valori nella sottoquery interna è NULL (tutti i dipendenti non sono manager!)
39.Which of the following WHERE clauses should be added / modified to the above query to give the expected results?
WHERE employee_id != (SELECT manager_id FROM employees);
WHERE employee_id IN (SELECT manager_id FROM employees);
WHERE employee_id <>ALL (SELECT manager_id FROM employees);
WHERE employee_id NOT IN (SELECT manager_id FROM employees WHERE manager_id is NOT NULL);
Answer: B, D. Se è probabile che la sottoquery abbia valori NULL, non utilizzare l'operatore NOT IN o, se si utilizza, modifica la sottoquery con una clausola WHERE aggiuntiva (opzione D)
40.What is true about sub-queries in general?
- Le sottoquery devono essere eseguite separatamente dalle query principali
- Le sottoquery possono essere eseguite a volontà dell'utente, non sono correlate all'esecuzione della query principale
- Le sottoquery sono uguali a due query sequenziali in cui i risultati della query interna vengono utilizzati dalla query principale
- Tutti i precedenti
Answer: C.
41. Which of the following is true about sub-queries?
- Una sottoquery può restituire 0 o più righe
- Una sottoquery può essere utilizzata solo nella clausola SELECT
- L'annidamento delle sottoquery è limitato a 2 livelli
- Le funzioni di gruppo non possono essere utilizzate nelle sottoquery
Answer: A. Una sottoquery è una query completa nidificata nella clausola SELECT, FROM, HAVING o WHERE di un'altra query. La sottoquery deve essere racchiusa tra parentesi e avere almeno una clausola SELECT e FROM. Una sottoquery a riga singola può restituire un massimo di un valore. Le sottoquery a più colonne restituiscono più di una colonna alla query esterna.
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)
Considera la seguente query.
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);
Questa query restituisce un errore. Qual è il motivo dell'errore?
- L'operatore NOT IN utilizzato non è valido
- La clausola WHERE nella sottoquery non è scritta correttamente
- La colonna nella clausola SELECT della sottoquery dovrebbe essere una solo quando è presente una disuguaglianza utilizzata nella query principale
- La sottoquery utilizza la stessa tabella della query principale
Answer: C. Le colonne selezionate nella sottoquery dovrebbero essere le stesse dell'altro lato dell'operatore di confronto. Qualsiasi disuguaglianza del tipo di dati o del numero di colonne comporterebbe un errore ORA.
43.A report has to be extracted which displays all the departments that have one or more employees assigned to them. Which of the following queries will give the required output? (Consider the table structure as given)
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SELECT department_name FROM employees WHERE department_id IN (SELECT distinct (department_id ) FROM employees);
SELECT department_name FROM employees WHERE department_id ANY (SELECT distinct (department_id ) FROM employees);
SELECT department_name FROM employees WHERE department_id < ANY (SELECT distinct (department_id ) FROM employees);
SELECT department_name FROM employees WHERE department_id = ANY (SELECT distinct (department_id ) FROM employees);
Answer: A, D.
44.What is the maximum level of sub-queries allowed in Oracle in a single SQL statement?
- 20
- 50
- Unlimited
- 255
Answer: D. Oracle supporta l'annidamento delle query a 255 livelli.
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?
- Utilizzando GROUP BY
- Utilizzo di sottoquery
- Utilizzando HAVING
- Nessuno dei precedenti
Answer: D. Potrebbe diventare possibile che le sottoquery forniscano un risultato NULL, che si traduce in 0 righe nel risultato principale; quindi è buona norma usarli solo se sappiamo di quali valori abbiamo bisogno.
Examine the table structure as given. Consider the following query and answer the questions 46 and 47 that follow:
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SELECT employee_id, first_name, last_name, job_id
FROM employees
WHERE job_id = (SELECT job_id FROM employees);
46.You need to find all the employees whose job ID is the same as that of an employee with ID as 210. Which of the following WHERE clauses would you add / modify to achieve this result? (Consider the table structure as given
WHERE job_id = (SELECT job_id FROM employees WHERE employee_id = 210);
WHERE job_id IN (SELECT job_id FROM employees WHERE employee_id = 210);
WHERE job_id > (SELECT job_id FROM employees WHERE employee_id = 210);
WHERE job_id >= (SELECT job_id FROM employees WHERE employee_id = 210);
Answer: A.
47.Assume that you change the WHERE clause as given in the option A in question 46 as the following.
WHERE job_id = (SELECT job_id FROM employees WHERE employee_id < 210);
Quale sarà il risultato di questo cambiamento?
- I risultati saranno gli stessi
- Errore ORA generato durante l'esecuzione
- I risultati saranno diversi
- La query verrà eseguita con successo fornendo 0 righe.
Answer: B. La sottoquery fornisce più di un risultato sulla modifica data e quindi un operatore a più righe dovrebbe sostituire il "=" nella query principale fornita sopra.
48.Examine the table structures as shown in the exhibit below.
È necessario visualizzare i nomi dei dipendenti che hanno lo stipendio più alto. Quale delle seguenti istruzioni SQL sarà corretta?
SELECT first_name, last_name, grade FROM employees, grade WHERE (SELECT max (salary) FROM employees) BETWEEN losal and hisal;
SELECT first_name, last_name, grade FROM employees, grade WHERE (SELECT max (salary) FROM employees) BETWEEN losal and hisal AND salary BETWEEN losal and hisal;
SELECT first_name, last_name, grade FROM employees, grade WHERE salary = (SELECT max (salary) FROM employees) AND salary BETWEEN losal and hisal;
SELECT first_name, last_name, grade FROM employees, grade WHERE salary IN (SELECT max (salary) FROM employees) AND max(salary) BETWEEN losal and hisal;
Answer: B, C. Le sottoquery possono essere scritte su entrambi i lati dell'operatore
49.What is the sub-query in the FROM clause of an SQL statement? (Choose the most appropriate answer)
- Sottoquery su riga singola
- Sottoquery su più righe
- Visualizzazione in linea
- Sottoquery correlata
Answer: C. Se una sottoquery viene visualizzata nella clausola FROM delle istruzioni SELECT, forma una visualizzazione Inline. Oracle crea internamente una vista temporanea per l'esecuzione della query.
50.What is the maximum number of nesting level allowed in an Inline View type sub-query?
- 255
- 300
- 216
- Unlimited
Answer: D. Poiché non vi è alcun limite al numero di tabelle che possono essere unite, non vi è alcun limite al numero di visualizzazioni in linea in una query.
51.What is true about co-related sub-queries?
- Le tabelle utilizzate nella query principale vengono utilizzate anche in una sottoquery correlata
- Le sottoquery che fanno riferimento a una colonna utilizzata nella query principale sono chiamate sottoquery correlate
- Le sottoquery scritte senza parentesi sono chiamate sottoquery correlate
- Le sottoquery che utilizzano obbligatoriamente tabelle diverse da quelle utilizzate nella query principale sono chiamate sottoquery co-correlate
Answer: B. La sottoquery correlata fa riferimento a una colonna nella query esterna ed esegue la sottoquery una volta per ogni riga nella query esterna mentre la sottoquery non correlata esegue prima la sottoquery e passa il valore alla query esterna.
52.Which of the following statements cannot be parent statements for a sub-query?
- SELECT
- RAGGRUPPA PER
- UPDATE
- DELETE
Answer: B. Il resto delle opzioni può essere nella query principale (query principale) di una sottoquery.
53.What is true about a co-related sub-query?
- Viene valutato solo una volta per la query padre
- Viene valutato solo tre volte per la query padre
- Viene valutata una volta per ogni riga elaborata dalla sottoquery principale
- Tutti i precedenti
Answer: C. La sottoquery correlata fa riferimento a una colonna nella query esterna ed esegue la sottoquery una volta per ogni riga nella query esterna; e l'operatore EXISTS viene utilizzato per verificare se la relazione o il collegamento è presente.
54.Examine the given table structure. You need to write a query which returns the names of the employees whose salaries exceed their respective department's average salary. Which of the following will work? (Choose the most appropriate answer)
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SELECT employee_id, first_name, last_name FROM employees e WHERE salary > (SELECT avg (salary) FROM employees WHERE e.department_id = department_id ) ORDER BY department_id ;
SELECT employee_id, first_name, last_name FROM employees e WHERE salary > ANY (SELECT avg(salary) FROM employees WHERE e.department_id = department_id ) ORDER BY department_id ;
SELECT employee_id, first_name, last_name FROM employees e WHERE salary = (SELECT avg(salary) FROM employees WHERE e.department_id = department_id ) ORDER BY department_id ;
SELECT employee_id, first_name, last_name FROM employees e WHERE salary < ANY (SELECT avg(salary) FROM employees WHERE e.department_id = department_id ) ORDER BY department_id ;
Answer: A. Qui viene ottenuto l'ID del reparto, utilizzato per valutare la query padre e se lo stipendio in quella riga è maggiore dello stipendio medio dei reparti di quella riga, viene restituito quel risultato.
55.Examine the given table structure. Which of the following queries will display duplicate records in a table EMPLOYEES?
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SELECT * FROM employees E WHERE exists (SELECT 1 FROM employees E1 WHERE E.employee_id = E1.employee_id);
SELECT * FROM employees E WHERE exists (SELECT 1 FROM employees E1 WHERE E.employee_id = E1.employee_id AND E.ROWID < E1.ROWID);
SELECT * FROM employees E WHERE exists (SELECT 1 FROM employees E1 WHERE E.ROWID < E1.ROWID);
SELECT * FROM employees E WHERE = ANY (SELECT 1 FROM employees E1 WHERE E.employee_id = E1.employee_id And E.ROWID < E1.ROWID);
Answer: A. La sottoquery correlata fa riferimento a una colonna nella query esterna ed esegue la sottoquery una volta per ogni riga nella query esterna; e l'operatore EXISTS viene utilizzato per verificare se la relazione o il collegamento è presente. Può essere utilizzato per trovare le righe duplicate in una tabella in cui la duplicità è soggetta a una colonna o a un insieme di colonne.
Examine the structures for the tables DEPARTMENTS and EMPLOYEES and answer the questions 56 and 57 that follow.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SQL> DESC departments
Name Null? Type
----------------------- -------- ----------------
DEPARTMENT_ID NOT NULL NUMBER(4)
DEPARTMENT_NAME NOT NULL VARCHAR2(30)
MANAGER_ID NUMBER(6)
LOCATION_ID NUMBER(4)
56.Which of the following queries will display the system date and count of records in the DEPARTMENTS and EMPLOYEES table?
SELECT sysdate, (SELECT * FROM departments) dept_count, (SELECT * FROM employees) emp_count FROM DUAL;
SELECT sysdate, (SELECT count(*) FROM departments) dept_count, (SELECT count(*) FROM employees) emp_count FROM DUAL GROUP BY department_id ;
SELECT sysdate, (SELECT * FROM departments) dept_count, (SELECT * FROM employees) emp_count FROM DUAL GROUP BY employee_id;
SELECT sysdate, (SELECT count(*) FROM departments) dept_count, (SELECT count(*) FROM employees) emp_count FROM DUAL;
Answer: D. Una sottoquery a riga singola può anche essere nidificata nella clausola SELECT della query esterna. In questo caso, il valore restituito dalla sottoquery è disponibile per ogni riga di output generata dalla query esterna. In genere, questa tecnica viene utilizzata per eseguire calcoli con un valore prodotto da una sottoquery.
57.Which of the following queries will tell whether a given employee is a manager in a Company 'XYZ'?
SELECT employee_id, manager_id FROM employees A WHERE employee_id ANY (SELECT manager_id from employees B) ORDER BY manager_id desc;
SELECT employee_id, manager_id FROM employees A WHERE employee_id < ALL (SELECT manager_id from employees B)
SELECT employee_id, manager_id FROM employees A WHERE employee_id IN (SELECT manager_id from employees B) ORDER BY manager_id desc;
SELECT employee_id, manager_id FROM employees A WHERE employee_id in (SELECT manager_id from employees B) GROUP BY department_id ;
Answer: C.
Examine the exhibit and answer the question 58 that follows:
58.Which of the following queries will give you maximum salary of an employee in a particular city?
SELECT max (salary), city FROM (SELECT salary, department_id , loc, city FROM employees natural join departments natural join locations);
SELECT salary, city FROM (SELECT salary, department_id , loc, city FROM employees natural join departments natural join locations);
SELECT max (salary), city FROM (SELECT salary, department_id , loc, city FROM employees natural join departments natural join locations) GROUP BY city;
SELECT max (avg(salary)), city FROM (SELECT salary, department_id , loc, city FROM employees natural join departments natural join locations);
Answer: C. Quando una sottoquery a più colonne viene utilizzata nella clausola FROM della query esterna, crea una tabella temporanea a cui può fare riferimento altre clausole della query esterna. Questa tabella temporanea è chiamata più formalmente una visualizzazione in linea. I risultati della sottoquery vengono trattati come qualsiasi altra tabella nella clausola FROM. Se la tabella temporanea contiene dati raggruppati, i sottoinsiemi raggruppati vengono trattati come righe di dati separate in una tabella.
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)
Considera la seguente domanda e rispondi alle domande da 59 a 62 che seguono.
SELECT department_name
FROM departments d INNER JOIN employees e
ON (d.employee_id = e.employee_id)
GROUP BY department_name;
59.Which of the following queries can replace the above query by using sub-queries giving the same result?
SELECT department_name FROM departments WHERE department_id = ANY (SELECT department_id FROM employees);
SELECT department_name FROM departments WHERE department_id IN (SELECT distinct(department_id ) FROM employees);
SELECT department_name FROM departments WHERE department_id = (SELECT distinct(department_id ) FROM employees);
SELECT department_name FROM departments WHERE department_id ANY (SELECT distinct(department_id ) FROM employees);
Answer: A, B.
60.Assume that the sub-query as shown in the query given above is modified to the following.
(SELECT distinct (department_id ) FROM employees ORDER BY department_id );
Quale sarà il risultato di questo cambiamento? (Scegli la risposta più appropriata)
- Ordinerà il department_id recuperato dalla sottoquery e lo visualizzerà in ordine crescente
- Verrà generato un errore ORA poiché la clausola ORDER BY dovrebbe essere accompagnata dalla clausola GROUP BY
- Genererà un errore ORA perché una clausola ORDER BY non può essere utilizzata all'interno di una sottoquery
- Verrà eseguito con successo.
Answer: C. Una sottoquery, ad eccezione di una nella clausola FROM, non può avere una clausola ORDER BY. Se è necessario visualizzare l'output in un ordine specifico, includere una clausola ORDER BY come ultima clausola della query esterna.
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;
Quale sarà il risultato di questo cambiamento? (Scegli la risposta più appropriata)
- Ordinerà il department_id recuperato dalla sottoquery e lo visualizzerà in ordine crescente
- Ordinerà il department_id recuperato dalla sottoquery e lo visualizzerà in ordine decrescente
- Genererà un errore ORA perché una clausola ORDER BY non può essere utilizzata all'interno di una sottoquery
- Nessuno dei precedenti
Answer: D. Una sottoquery, ad eccezione di una nella clausola FROM, non può avere una clausola ORDER BY. Se è necessario visualizzare l'output in un ordine specifico, includere una clausola ORDER BY come ultima clausola della query esterna.
62.Which of the following can be used to order results in a sub-query?
- ORDINATO DA
- HAVING
- RAGGRUPPA PER
- Tutti i precedenti
Answer: C. Per impostazione predefinita, la clausola GROUP BY esegue l'ordinamento in una sottoquery.
Examine the exhibit below and answer the questions 63 to 65 that follow:
Considera la seguente query:
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?
- Fornisce tutti gli AU_ID e AU_TITLE che iniziano con la lettera "S%"
- Fornisce tutti gli AU_ID e AU_TITLE che iniziano con la lettera "S%" ordinati in base ai titoli in ordine crescente
- Genera un errore ORA
- Restituisce un valore 0
Answer: C. Una colonna con un CLOB, BLOB, NCLOB o un ARRAY non può essere utilizzata in una sottoquery.
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);
Questa query restituisce un errore. Qual è il motivo dell'errore?
- Quando viene utilizzata la funzione MAX, è necessario utilizzare una clausola GROUP BY
- Entrambe le sottoquery non possono utilizzare lo stesso ID reparto nella stessa query esterna
- L'operatore BETWEEN non può essere utilizzato con una sottoquery
- La clausola SELECT dovrebbe avere colonne menzionate e non un asterisco (*)
Answer: C. L'operatore BETWEEN può essere utilizzato all'interno di una sottoquery ma non con una sottoquery.
65.What is true about using NOT IN when writing queries with sub-queries in them?
- NOT IN ignora tutti i valori NULL e fornisce solo i valori NOT NULL
- NOT IN inserisce tutti i valori NULL all'ultimo e restituisce NOT NULL da visualizzare per primo
- NOT IN non deve essere utilizzato se è previsto un valore NULL nel set di risultati
- NOT IN è solo una negazione dell'operatore IN e può essere modificato senza alcun avvertimento.
Answer: C. SQL gestisce i valori NULL in un modo diverso e quindi è una buona pratica evitare NOT IN se il set di risultati potrebbe contenere un NULL.
Consider the following table structures and answer the questions 66 to 72 that follow:
66. You need to find out the names and IDs of the departments in which the least salary is greater than the highest salary in the department 10. Which of the following queries will give the required result.
SELECT department_id , min(salary) FROM employees GROUP BY department_id HAVING min(salary) > ( select max(salary) FROM employees where department_id = 10 )
SELECT department_id , min(salary) FROM employees GROUP BY department_id HAVING min(salary) > ANY ( select max(salary) FROM employees )
SELECT department_id , min(salary) FROM employees HAVING max(salary) < ANY ( select min(salary) FROM employees where department_id = 10 )
SELECT department_id , min(salary) FROM employees GROUP BY department_id HAVING min(salary) > ALL ( select max(salary) FROM employees where department_id = 10 )
Answer: A.
67.Write a query to find the employees whose salary is equal to the salary of at least one employee in department of id 10. (Choose the best answer)
SELECT employee_id, Salary FROM employees WHERE salary in ( SELECT salary FROM employees where department_id = 10 )
SELECT employee_id, Salary FROM employees WHERE salary =ANY ( SELECT salary FROM employees where department_id = 10 )
SELECT employee_id, Salary FROM employees WHERE salary ALL ( SELECT salary FROM employees where department_id = 10 )
SELECT employee_id, Salary FROM employees WHERE salary < ANY ( SELECT salary FROM employees where department_id = 10 )
Answer: A, B.
68.You need to find out all the employees who have salary greater than at least one employee in the department 10. Which of the following queries will give you the required output?
SELECT employee_id, Salary FROM employees WHERE salary >= ANY ( SELECT salary FROM employees where department_id = 10 )
SELECT employee_id, Salary FROM employees WHERE salary > ANY ( SELECT salary FROM employees where department_id = 10 )
SELECT employee_id, Salary FROM employees WHERE salary < ANY ( SELECT salary FROM employees where department_id = 10 )
SELECT employee_id, Salary FROM employees WHERE salary = ALL ( SELECT salary FROM employees where department_id = 10 )
Answer: B.
69.You need to find out all the employees who have salary lesser than the salary of all the employees in the department 10. Which of the following queries will give you the required output?
SELECT employee_id, Salary FROM employees WHERE salary > ALL ( SELECT salary FROM employees where department_id = 10 )
SELECT employee_id, Salary FROM employees WHERE salary =ALL ( SELECT salary FROM employees where department_id = 10 )
SELECT employee_id, Salary FROM employees WHERE salary < ALL ( SELECT salary FROM employees where department_id = 10 )
SELECT employee_id, Salary FROM employees WHERE salary < ANY ( SELECT salary FROM employees where department_id = 10 )
Answer: C. Le sottoquery su più righe restituiscono più di una riga di risultati. Gli operatori che possono essere utilizzati con sottoquery a più righe includono IN, ALL, ANY ed EXISTS. Le sottoquery a più colonne restituiscono più di una colonna alla query esterna. Le colonne di dati vengono passate alla query esterna nello stesso ordine in cui sono elencate nella clausola SELECT della sottoquery.
70.You need to find out all the employees who have their manager and department matching with the employee having an Employee ID of 121 or 200. Which of the following queries will give you the required output?
SELECT employee_id, manager_id,department_id FROM employees WHERE (manager_id,department_id ) = ANY ( select manager_id, department_id FROM employees where employee_id in (121,200) )
SELECT employee_id, manager_id,department_id FROM employees WHERE (manager_id,department_id ) < ANY ( select manager_id, department_id FROM employees where employee_id in (121,200) )
SELECT employee_id, manager_id,department_id FROM employees WHERE (manager_id,department_id ) > ANY ( select manager_id, department_id FROM employees where employee_id in (121,200) )
SELECT employee_id, manager_id,department_id FROM employees WHERE (manager_id,department_id ) in ( select manager_id, department_id FROM employees where employee_id in (121,200) )
Answer: A, D. Le sottoquery su più righe restituiscono più di una riga di risultati. Gli operatori che possono essere utilizzati con sottoquery su più righe includono IN, ALL, ANY e EXISTS. Le sottoquery a più colonne restituiscono più di una colonna alla query esterna. Le colonne di dati vengono passate alla query esterna nello stesso ordine in cui sono elencate nella clausola SELECT della sottoquery.
71.You need to find the department name of an employee with employee ID 200. Which of the following queries will be correct? (Choose the most appropriate answer)
SELECT employee_id, first_name, last_name,department_id , (SELECT department_name FROM departments d, employees E WHERE d.department_id = e.department_id And employee_id = 200 ) FROM employees e
SELECT employee_id, first_name, last_name,department_id , (SELECT department_ID FROM departments d WHERE d.department_id = department_id ) FROM employees e WHERE employee_id = 200;
SELECT employee_id, first_name, last_name,department_id , (SELECT department_name FROM departments d WHERE d.department_id = e.department_id And employee_id = 200 ) FROM employees e
SELECT employee_id, first_name, last_name,department_id , (SELECT department_name FROM departments d,employee E WHERE d.department_id = e.department_id ) FROM employees e
Answer: C.
72.You need to find the highest earning employee with the job ID as 'SA_REP'. Which of the following queries will be correct? (Choose the most appropriate answer)
SELECT job_id, employee_id, Salary FROM employees e WHERE job_id = ( SELECT distinct salary FROM employees E1 WHERE E.job_id = E1.job_id AND E.salary <= E1.salary AND job_id = 'SA_REP'
SELECT department_id , employee_id, Salary FROM employees E WHERE 1 = ( SELECT count(distinct salary) FROM employees E1 WHERE E.job_id = E1.job_id AND E.salary <= E1.salary AND job_id = 'SA_REP' )
SELECT department_id , employee_id, Salary FROM employees E WHERE 0 = ( SELECT count(distinct salary) FROM employees E1 WHERE E.job_id = E1.job_id AND E.salary = E1.salary AND job_id = 'SA_REP' )
SELECT department_id , employee_id, Salary FROM employees E WHERE 1 = ( SELECT salary FROM employees E1 WHERE E.job_id < E1.job_id AND E.salary <= E1.salary AND job_id = 'SA_REP' )
Answer: B.
Consider the EMPLOYEES table structure as shown in the exhibit and answer the questions 73 to 77 that follow:
73.You need to find the job which has at least one employee in it. Which of the following queries will be correct? (Choose the most appropriate answer)
SELECT employee_id, Job_id FROM employees E WHERE exists ( SELECT 1 FROM employees E1 WHERE E.job_id = E1.job_id )
SELECT employee_id, Job_id FROM employees E WHERE exists ( SELECT * FROM employees E1 WHERE E.job_id = E1.job_id )
SELECT employee_id, Job_id FROM employees E WHERE not exists ( SELECT * FROM employees E1 WHERE E.job_id = E1.job_id )
SELECT employee_id, Job_id FROM employees E WHERE exists ( SELECT 1 FROM employees E1 WHERE E.job_id < E1.job_id )
Answer: A. L'operatore EXISTS viene utilizzato per controllare e abbinare i record tra le query. Restituisce un valore BOOLEANO. La sottoquery correlata fa riferimento a una colonna nella query esterna ed esegue la sottoquery una volta per ogni riga nella query esterna; e l'operatore EXISTS viene utilizzato per verificare se la relazione o il collegamento è presente. Una sottoquery non correlata esegue prima la sottoquery e passa il valore alla query esterna.
74.You need to find the job which has no employees in it. Which of the following queries will be correct? (Choose the most appropriate answer)
SELECT employee_id, Job_id FROM employees E WHERE exists ( SELECT * FROM employees E1 WHERE E.job_id = E1.job_id )
SELECT employee_id, Job_id FROM employees E WHERE not exists ( SELECT 1 FROM employees E1 WHERE E.job_id = E1.job_id )
SELECT employee_id, Job_id FROM employees E WHERE not exists ( SELECT * FROM employees E1 WHERE E.job_id = E1.job_id )
SELECT employee_id, Job_id FROM employees E WHERE exists ( SELECT 1 FROM employees E1 WHERE E.job_id < E1.job_id )
Answer: B. NOT EXISTS è l'operatore di negazione per EXISTS.
75.You need to find the 3rd maximum salary from the EMPLOYEES table. Which of the following queries will give you the required results? (Choose the most appropriate answer)
SELECT * FROM employees E WHERE salary = (SELECT count(distinct salary ) FROM employees WHERE e.salary = salary );
SELECT * FROM employees E WHERE 1 = (SELECT count(distinct salary ) FROM employees WHERE e.salary < salary );
SELECT * FROM employees E WHERE 2 = (SELECT count(distinct salary ) FROM employees WHERE e.salary >salary );
SELECT * FROM employees E WHERE 3 = (SELECT count(distinct salary ) FROM employees WHERE e.salary <= salary );
Answer: D.
76. You need to find the maximum salary by using the user input for getting the value of N. Which of the following queries will give you the required results? (Choose the most appropriate answer)
SELECT salary FROM ( SELECT rowid as user_sal FROM (SELECT distinct salary from employees ORDER BY salary desc) ) WHERE user_sal=&N ;
SELECT salary FROM ( SELECT rownum as user_sal FROM (SELECT distinct salary FROM employees GROUP BY salary ) ) WHERE user_sal <= &N ;
SELECT salary FROM ( SELECT rownum as user_sal, salary FROM (SELECT distinct salary FROM employees ORDER BY salary desc) ) WHERE user_sal=&N ;
SELECT salary FROM ( SELECT max(rownum) as user_sal, salary FROM (SELECT distinct salary FROM employees ORDER BY salary desc) ) WHERE user_sal=&N ;
Answer: C. ROWNUM è una pseudo colonna utilizzata per trovare i risultati dell'ennesimo ordine.
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)
- L'istruzione genererebbe un errore ORA
- L'istruzione restituirà tutte le righe nella tabella
- L'istruzione restituirà NULL come risultato di output.
- L'istruzione non restituirà alcuna riga nel risultato.
Answer: D.
78.What is the maximum level up to which Sub-queries can be nested?
- 255
- 100
- 2
- 16
Answer: A.
79.What is true about the EXISTS operator in SQL queries with respect to sub-queries?
- Le colonne selezionate nelle sottoquery sono importanti
- La query interna dovrebbe restituire righe, qualsiasi risultato è ciò che è importante, non ciò che è SELEZIONATO
- Sia a che B
- Nè a nè B
Answer: B.
80.What is true about the ANY operator used for sub-queries?
- Restituisce righe che corrispondono a tutti i valori in un elenco / sottoquery
- Restituisce le righe che corrispondono ai primi 5 valori in un elenco / sottoquery
- Restituisce righe che corrispondono a qualsiasi valore in un elenco / sottoquery
- Restituisce il valore 0 quando tutte le righe corrispondono in un elenco / sottoquery
Answer: C.
81.What is true about the ALL operator used for sub-queries? (Choose the most appropriate answer.)
- Restituisce righe che corrispondono a tutti i valori in un elenco / sottoquery
- Restituisce righe che corrispondono solo ad alcuni valori in un elenco / sottoquery
- Restituisce righe solo se tutti i valori corrispondono in un elenco / sottoquery
- Tutti i precedenti
Answer: C. '> ALL' Più del valore più alto restituito dalla sottoquery. '<TUTTO' Minore del valore più basso restituito dalla sottoquery. '<QUALSIASI' Minore del valore più alto restituito dalla sottoquery. '> QUALSIASI' Più del valore più basso restituito dalla sottoquery. '= ANY' Uguale a qualsiasi valore restituito dalla sottoquery (uguale a IN). La riga "[NOT] EXISTS" deve corrispondere a un valore nella sottoquery.
82.What is true about using sub-queries in INSERT statements in Oracle?
- Possono essere utilizzati nella clausola INSERT senza alcuna restrizione
- Possono essere utilizzati nella clausola INSERT solo per i valori numerici
- L'elenco SELECT di una sottoquery dovrebbe essere lo stesso dell'elenco di colonne dell'istruzione INSERT.
- Nessuno dei precedenti
Answer: C.
Examine the table structures as given below and answer the questions 83 to 86 that follow.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SQL> DESC departments
Name Null? Type
----------------------- -------- ----------------
DEPARTMENT_ID NOT NULL NUMBER(4)
DEPARTMENT_NAME NOT NULL VARCHAR2(30)
MANAGER_ID NUMBER(6)
LOCATION_ID NUMBER(4)
83.You need to find the details of all employees who were hired for the job ID 'SA_REP' in the month of June, 2013. Which of the following queries will give the required results? (Consider the table structure as given)
SELECT first_name FROM employees WHERE employee_id = ( SELECT employee_id FROM employees WHERE to_char(hiredate, 'MM/YYYY')= '02/1981' AND job_id = 'SA_REP' );
SELECT first_name FROM employees WHERE employee_id = ANY ( SELECT employee_id FROM employees WHERE to_char(hiredate, 'MM/YYYY')= '02/1981' AND job_id = 'SA_REP' );
SELECT first_name FROM employees WHERE employee_id ANY ( SELECT employee_id FROM employees WHERE to_char(hiredate, 'MM/YYYY')= '02/1981' AND job_id = 'SA_REP' );
SELECT first_name FROM employees WHERE employee_id exists ( SELECT employee_id FROM employees WHERE to_char(hiredate, 'MM/YYYY')= '02/1981' AND job_id = 'SA_REP' );
Answer: B.
84.Which of the following statements are equivalent?
SELECT employee_id , salary FROM employees WHERE salary < ALL (SELECT salary FROM employees WHERE department_id=100);
SELECT employee_id , salary FROM employees WHERE salary < (SELECT min(salary) FROM employees WHERE department_id=100);
SELECT employee_id FROM employees WHERE salary not >= ANY (SELECT salary FROM employees WHERE department_id=100);
- Nessuno dei precedenti
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');
Cosa si può dire delle due affermazioni?
- Entrambe le query dovrebbero generare lo stesso risultato.
- Entrambe le query genereranno un errore.
- Se sono presenti due reparti con lo stesso nome, entrambe le query avranno esito negativo.
- Entrambe le query verranno eseguite correttamente anche se è presente più di un reparto denominato "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);
Quale sarà il risultato della query precedente?
- Viene eseguito correttamente e fornisce i risultati richiesti
- Viene eseguito correttamente ma non fornisce l'output richiesto
- Genera un errore ORA durante l'esecuzione
- Viene eseguito correttamente e fornisce il risultato richiesto quando> ALL viene sostituito con> = ALL
Answer: B, D. > ALL non darà il risultato richiesto in quanto potrebbero esserci due dipendenti con lo stesso stipendio e che sono i più alti guadagni nel dipartimento 100
Consider table structures as shown in the exhibit and answer the questions 87 to 89 that follow:
87.You need to fetch the first names (in a reverse alphabetical order) of all the employees in the department ID = 100 and who have the maximum salary in the JOB ID = 'SA_REP'. Which of the following queries will give the required output? (Choose the most appropriate output)
SELECT E.first_name, job_id , salary FROM employees E WHERE salary = (SELECT max(salary) FROM employees E1 WHERE E1.department_id = 100 GROUP BY job_id ) AND job_id = 'SA_REP' ORDER BY first_name;
SELECT E.first_name, job_id , salary FROM employees E WHERE salary in (SELECT max(salary) FROM employees E1 where E1.department_id = 100) ORDER BY first_name;
SELECT E.first_name, job_id , salary FROM employees E WHERE salary IN (SELECT max(salary) FROM employees E1 where job_id = 'SA_REP' GROUP BY job_id ) AND WHERE E.department_id = 100 ORDER BY first_name desc;
SELECT E.first_name, job_id , salary FROM employees E WHERE salary IN (SELECT max(salary) FROM employees E1 WHERE E1.department_id = 100 GROUP BY job_id ) ORDER BY first_name ;
Answer: C.
88.In the queries given above (option C is the correct answer), you need to display all the employees with the JOB ID 'SA_REP' who have the maximum salary in the department 100. Which of the following queries will give the required output?
SELECT E.first_name, job_id , salary FROM employees E WHERE salary IN (SELECT max(salary) FROM employees E1 WHERE E1.department_id = 100 GROUP BY job_id ) AND job_id = 'SA_REP' ORDER BY first_name;
SELECT E.first_name, job_id , salary FROM employees E WHERE salary in (SELECT max(salary) FROM employees E1 WHERE E1.department_id = 100) ORDER BY first_name;
SELECT E.first_name, job_id , salary FROM employees E WHERE salary in (SELECT max(salary) FROM employees E1 WHERE job_id = 'SA_REP' GROUP BY job_id ) And WHERE E.department_id = 100 ORDER BY first_name desc;
SELECT E.first_name, job_id , salary FROM employees E WHERE salary in (SELECT max(salary) FROM employees E1 WHERE E1.department_id = 100 GROUP BY job_id ) ORDER BY first_name ;
Answer: A.
89.Select the query which will give you the maximum salary and maximum comm percentage. The query should also give the maximum comm percentage paid if the highest salaried employee gets the maximum comm percentage.
SELECT employee_id, max(salary), max(commission_pct ) FROM employees E GROUP BY salary, commission_pct ;
SELECT employee_id, max(salary), max(commission_pct ) FROM employees E GROUP BY salary;
SELECT employee_id, max(salary) FROM employees E GROUP BY salary, commission_pct HAVING max(commission_pct ) = 100;
SELECT employee_id, (SELECT max(salary) FROM employees) * (SELECT max(commission_pct ) FROM employees) FROM DUAL;
Answer: D. Una sottoquery a riga singola può anche essere nidificata nella clausola SELECT della query esterna. In questo caso, il valore restituito dalla sottoquery è disponibile per ogni riga di output generata dalla query esterna. In genere, questa tecnica viene utilizzata per eseguire calcoli con un valore prodotto da una sottoquery.
90.What is true about the sub-queries used in the SELECT clause of an SQL statement?
- Queste sottoquery sono le stesse in tutti gli aspetti di quelle utilizzate nelle clausole FROM o WHERE
- Queste sottoquery devono essere obbligatoriamente sottoquery a riga singola
- Possiamo usare operatori multi riga durante la scrittura di tali sottoquery
- Nessuno dei precedenti
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;
- Fornisce la data di sistema e lo stipendio massimo per ogni dipartimento
- Dà lo stipendio massimo per tutti i reparti
- Genera un errore ORA
- Viene eseguito correttamente con 0 righe
Answer: C. Una sottoquery su più righe non può essere utilizzata nella clausola SELECT di un'istruzione SQL. Solo una sottoquery a riga singola può essere nidificata nella clausola SELECT della query esterna.
Examine the given table structure. Consider the following query and answer the questions 92 to 95 that follow:
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SELECT salary
FROM employees
WHERE salary > ALL (10, 20, 30);
92.Which of the following queries are equivalent to the above query?
SELECT salary FROM employees WHERE salary >10 or salary > 20 and salary >30;
SELECT salary FROM employees WHERE salary <10 and salary < 20 and salary <30;
SELECT salary FROM employees WHERE salary >10 and salary > 20 and salary >30;
SELECT salary FROM employees WHERE salary >10 and salary > 20 or salary < 30;
Answer: C. La domanda mostra la clausola ALL in modo semplificato quando è seguita da un elenco.
93. If in the above query the list (10,20,30) is replaced by a sub-query, which of the following queries will give the required output for the department number 100?
SELECT E.salary FROM employees E WHERE E.salary > (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100);
SELECT E.salary FROM employees E WHERE E.salary >ALL (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100);
SELECT E.salary FROM employees E WHERE E.salary = (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100);
SELECT E.salary FROM employees E WHERE E.salary >= (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100);
Answer: B. La domanda mostra la clausola ALL in modo semplificato quando è seguita da una sottoquery
94.With respect to the question 14 above, what among the following will be an equivalent query if ALL has to be replaced with ANY?
SELECT E.salary FROM employees E WHERE NOT EXISTS (E.salary =ANY (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100);
SELECT E.salary FROM employees E WHERE E.salary >ANY (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100);
SELECT E.salary FROM employees E WHERE E.salary =ANY (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100);
SELECT E.salary FROM employees E WHERE NOT ( E.salary <= ANY (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100));
Answer: D. L'operatore NOT utilizzato durante l'utilizzo di "<= ANY" viene utilizzato per negare i risultati restituiti dalla sottoquery
95.With respect to the question 94, if the operator ANY is not to be used, which of the following queries will be correct?
SELECT E.salary FROM employees E WHERE NOT EXISTS (E.salary = ANY (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100);
SELECT E.salary FROM employees E WHERE NOT EXISTS (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100 And E.salary <= E1.salary);
- O A o B
- Nessuno dei precedenti
Answer: B. La sottoquery correlata fa riferimento a una colonna nella query esterna ed esegue la sottoquery una volta per ogni riga nella query esterna; e l'operatore EXISTS viene utilizzato per verificare se la relazione o il collegamento è presente. Una sottoquery non correlata esegue prima la sottoquery e passa il valore alla query esterna.
Examine the given table structures. Consider the following query and answer the questions 96 to 98 that follow:
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SELECT salary
FROM employees
WHERE salary > ANY (10, 20, 30);
96. Which of the following queries are equivalent to the above query?
SELECT salary FROM employees WHERE salary >10 or salary > 20 and or >30;
SELECT salary FROM employees WHERE salary <10 and salary < 20 and salary <30;
SELECT salary FROM employees WHERE salary >10 and salary > 20 or salary >30;
SELECT salary FROM employees WHERE salary >10 and salary > 20 or salary < 30;
Answer: A. La domanda mostra la clausola ANY in modo semplificato quando è seguita da un elenco.
97. In the above query, if the list (10, 20, 30) is replaced by a sub-query, which of the following queries will give the required output for the department number 100?
SELECT E.salary FROM employees E WHERE E.salary > (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100);
SELECT E.salary FROM employees E WHERE E.salary >ANY (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100);
SELECT E.salary FROM employees E WHERE E.salary = (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100);
SELECT E.salary FROM employees E WHERE E.salary >= (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100);
Answer: B. La domanda mostra la clausola ANY in modo semplificato quando è seguita da una sottoquery
98.With respect to the question 97 above, what among the following will be an equivalent query if ANY is removed?
SELECT E.salary FROM employees E WHERE NOT EXISTS (E.salary =ANY (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100);
SELECT E.salary FROM employees E WHERE EXISTS (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100 And E.salary >E1.salary);
SELECT E.salary FROM employees E WHERE EXISTS (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100 );
SELECT E.salary FROM employees E WHERE IN (SELECT E1.salary FROM employees E1 WHERE E1.department_id = 100);
Answer: B. L'operatore EXISTS può sostituire l'operatore QUALSIASI. La sottoquery correlata fa riferimento a una colonna nella query esterna ed esegue la sottoquery una volta per ogni riga nella query esterna; e l'operatore EXISTS viene utilizzato per verificare se la relazione o il collegamento è presente.
99.Examine the given table structure. How many rows will get generated if the sub-query mentioned returns 0 rows?
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SELECT E.salary
FROM employees E
WHERE E.salary > ANY ( select E1.salary FROM employees E1 where E1.department_id = 100);
- 1 riga
- Nessuna riga
- O A o B
- Nessuno dei precedenti
Answer: B. Se la sottoquery restituisce zero righe, la condizione "> ANY" restituisce FALSE, quindi viene restituito "Nessuna riga".
100. A subquery must be placed in the outer query's HAVING clause if:
- La query interna deve fare riferimento al valore restituito alla query esterna.
- Il valore restituito dalla query interna deve essere confrontato con i dati raggruppati nella query esterna.
- La sottoquery restituisce più di un valore alla query esterna.
- Nessuno dei precedenti. Le sottoquery non possono essere utilizzate nella clausola HAVING della query esterna.
Answer: B. Una clausola HAVING viene utilizzata quando i risultati di gruppo di una query devono essere limitati in base a una condizione. Se il risultato di una sottoquery deve essere confrontato con una funzione di gruppo, è necessario nidificare la query interna nella clausola HAVING della query esterna.