Le subquery possono restituire valori singoli, una singola riga, colonne multiple o più righe. La loro flessibilità le rende uno strumento potente per interrogazioni complesse, consentendo di eseguire analisi che richiedono più passaggi o di confrontare i dati all'interno della stessa tabella o tra tabelle diverse.
Esempi di Subquery
Subquery in una clausola WHERE
Per trovare i nomi degli impiegati che hanno lo stipendio superiore alla media:
SELECT nome, cognome FROM impiegati WHERE stipendio > (SELECT AVG(stipendio) FROM impiegati);
In questo caso, la subquery calcola lo stipendio medio degli impiegati, e la query principale seleziona gli impiegati che guadagnano più della media.
Subquery in una clausola FROM
Per elencare il numero di impiegati in ogni dipartimento che ha più di 10 impiegati:
SELECT dipartimento_id, COUNT(*) AS numero_impiegati FROM (SELECT dipartimento_id FROM impiegati GROUP BY dipartimento_id HAVING COUNT(*) > 10) AS dipartimenti_con_piu_impiegati GROUP BY dipartimento_id;
Qui, la subquery crea un elenco temporaneo dei dipartimenti con più di 10 impiegati, e la query esterna conta il numero di impiegati in ciascuno di questi dipartimenti.
Subquery in una clausola SELECT
Per selezionare gli impiegati insieme al numero totale di impiegati nel loro dipartimento:
SELECT nome, cognome, (SELECT COUNT(*) FROM impiegati AS i WHERE i.dipartimento_id = e.dipartimento_id) AS numero_totale_nel_dipartimento FROM impiegati AS e;
Questa query elenca tutti gli impiegati e include una colonna che mostra il totale degli impiegati nel loro rispettivo dipartimento, calcolato tramite una subquery.
Le subquery sono uno strumento versatile che può rendere le tue query SQL molto più potenti e flessibili, consentendo analisi complesse e interrogazioni dinamiche basate sui dati di un database.