Teradata - SubQueries

Podzapytanie zwraca rekordy z jednej tabeli na podstawie wartości z innej tabeli. Jest to zapytanie SELECT w ramach innego zapytania. Zapytanie SELECT wywołane jako zapytanie wewnętrzne jest wykonywane jako pierwsze, a wynik jest używany przez zapytanie zewnętrzne. Niektóre z jego najważniejszych cech to:

  • Zapytanie może mieć wiele podzapytań, a podzapytania mogą zawierać inne podzapytanie.

  • Podzapytania nie zwracają zduplikowanych rekordów.

  • Jeśli podzapytanie zwraca tylko jedną wartość, możesz użyć operatora =, aby użyć go z zapytaniem zewnętrznym. Jeśli zwraca wiele wartości, możesz użyć IN lub NOT IN.

Składnia

Poniżej znajduje się ogólna składnia podzapytań.

SELECT col1, col2, col3,… 
FROM  
Outer Table 
WHERE col1 OPERATOR ( Inner SELECT Query);

Przykład

Rozważ poniższą tabelę wynagrodzeń.

Pracownik numer obrzydliwy Odliczenie Płaca netto
101 40 000 4000 36.000
102 80 000 6000 74 000
103 90 000 7,000 83 000
104 75 000 5000 70 000

Poniższe zapytanie identyfikuje numer pracownika z najwyższym wynagrodzeniem. Wewnętrzny SELECT wykonuje funkcję agregującą w celu zwrócenia maksymalnej wartości NetPay, a zewnętrzne zapytanie SELECT używa tej wartości do zwrócenia rekordu pracownika z tą wartością.

SELECT EmployeeNo, NetPay 
FROM Salary 
WHERE NetPay =  
(SELECT MAX(NetPay)  
FROM Salary);

Gdy to zapytanie jest wykonywane, generuje następujące dane wyjściowe.

*** Query completed. One row found. 2 columns returned. 
*** Total elapsed time was 1 second.  
 EmployeeNo     NetPay 
-----------  ----------- 
    103         83000