Articles

Sottoquery correlata SQL

Sommario: in questo tutorial, imparerete a conoscere la sottoquery correlata SQL che è una sottoquery che utilizza i valori della query esterna.

Introduzione alla sottoquery correlata a SQL

Iniziamo con un esempio.

Vedere la seguente tabellaemployees nel database di esempio:

Sottoquery correlata a SQL: Tabella impiegati

La query riportata di seguito trova i dipendenti il cui stipendio è superiore alla media di stipendio di tutti i dipendenti:

SELECT employee_id, first_name, last_name, salaryFROM employeesWHERE salary > (SELECT AVG(salary) FROM employees);
SQL Sottoquery esempio

In questo esempio, la subquery viene utilizzato nel WHERE clausola. Ci sono alcuni punti che puoi vedere da questa query:

Innanzitutto, puoi eseguire la sottoquery che restituisce lo stipendio medio di tutti i dipendenti in modo indipendente.

SELECT AVG(salary)FROM employees;

In secondo luogo, il sistema di database deve valutare la sottoquery solo una volta.

In terzo luogo, la query esterna utilizza il risultato restituito dalla sottoquery. La query esterna dipende dalla subquery per il suo valore. Tuttavia, la sottoquery non dipende dalla query esterna. A volte, chiamiamo questa sottoquery è una sottoquery semplice.

A differenza di una sottoquery semplice, una sottoquery correlata è una sottoquery che utilizza i valori della query esterna. Inoltre, una sottoquery correlata può essere valutata una volta per ogni riga selezionata dalla query esterna. Per questo motivo, una query che utilizza una sottoquery correlata può essere lenta.

Una subquery correlata è anche conosciuta come una subquery ripetuta o una subquery sincronizzata.

SQL correlated subquery examples

Vediamo alcuni altri esempi delle sottoquery correlate per capirle meglio.

Sottoquery correlata a SQL nell’esempio della clausola WHERE

La seguente query trova tutti i dipendenti il cui stipendio è superiore allo stipendio medio dei dipendenti nei loro reparti:

SELECT employee_id, first_name, last_name, salary, department_idFROM employees eWHERE salary > (SELECT AVG(salary) FROM employees WHERE department_id = e.department_id)ORDER BY department_id , first_name , last_name;

Ecco l’output:

SQL Subquery Correlata Esempio

In questo esempio, la query esterna:

SELECT employee_id, first_name, last_name, salary, department_idFROM employees eWHERE salary >...

e la subquery correlata è:

SELECT AVG( list_price )FROM productsWHERE category_id = p.category_id

Per ogni dipendente, il sistema di database per eseguire il subquery correlata una volta per calcolare lo stipendio medio dei dipendenti del dipartimento di corrente dipendente.

di SQL correlata subquery nella clausola SELECT esempio

La query seguente restituisce i dipendenti e la media delle retribuzioni di tutti i dipendenti nei loro reparti:

SELECT employee_id, first_name, last_name, department_name, salary, (SELECT ROUND(AVG(salary),0) FROM employees WHERE department_id = e.department_id) avg_salary_in_departmentFROM employees e INNER JOIN departments d ON d.department_id = e.department_idORDER BY department_name, first_name, last_name;

L’output è:

SQL Correlata Subquery nella clausola SELECT

Per ogni dipendente, il sistema di database per eseguire il subquery correlata una volta per calcolare lo stipendio medio dal dipartimento del dipendente.

Sottoquery correlata SQL con EXISTS operatore esempio

Spesso usiamo una sottoquery correlata con l’operatoreEXISTS. Per esempio, la query seguente restituisce tutti i dipendenti che non hanno persone a carico:

SELECT employee_id, first_name, last_nameFROM employees eWHERE NOT EXISTS( SELECT * FROM dependents d WHERE d.employee_id = e.employee_id)ORDER BY first_name , last_name;

l’immagine seguente mostra L’output:

SQL Subquery Correlata con operatore EXISTS

In questo tutorial, avete imparato a conoscere il SQL subquery correlata e come applicare al modulo di query complesse.

  • Questo tutorial è stato utile ?