Teradata - SubQueries
Una sottoquery restituisce i record di una tabella in base ai valori di un'altra tabella. È una query SELECT all'interno di un'altra query. La query SELECT chiamata come query interna viene eseguita per prima e il risultato viene utilizzato dalla query esterna. Alcune delle sue caratteristiche salienti sono:
Una query può avere più sottoquery e le sottoquery possono contenere un'altra sottoquery.
Le sottoquery non restituiscono record duplicati.
Se la sottoquery restituisce un solo valore, è possibile utilizzare l'operatore = per utilizzarlo con la query esterna. Se restituisce più valori è possibile utilizzare IN o NOT IN.
Sintassi
Di seguito è riportata la sintassi generica delle sottoquery.
SELECT col1, col2, col3,…
FROM
Outer Table
WHERE col1 OPERATOR ( Inner SELECT Query);
Esempio
Considera la seguente tabella degli stipendi.
EmployeeNo | Schifoso | Deduzione | Retribuzione netta |
---|---|---|---|
101 | 40.000 | 4.000 | 36.000 |
102 | 80.000 | 6.000 | 74.000 |
103 | 90.000 | 7.000 | 83.000 |
104 | 75.000 | 5.000 | 70.000 |
La seguente query identifica il numero del dipendente con lo stipendio più alto. Il SELECT interno esegue la funzione di aggregazione per restituire il valore NetPay massimo e la query SELECT esterna utilizza questo valore per restituire il record del dipendente con questo valore.
SELECT EmployeeNo, NetPay
FROM Salary
WHERE NetPay =
(SELECT MAX(NetPay)
FROM Salary);
Quando questa query viene eseguita, produce il seguente output.
*** Query completed. One row found. 2 columns returned.
*** Total elapsed time was 1 second.
EmployeeNo NetPay
----------- -----------
103 83000