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