Znajdź pracowników, których pensje są równe minimalnej pensji w ich dziale:
> Rozwiązanie przez podzapytanie złączone z podzapytaniem nadrzędnym
select ID_P, IMIĘ, NAZWISKO, PENSJA frorn pracownicy PI where PENSJA = (select MIN(PENSJA) from pracownicy P2 where P2.ID_D = P1.ID_D);
> Rozwiązanie przez operator IN zastosowany z podzapytaniem, które wówczas nie wymaga złączenia z zapytaniem nadrządnym
select ID_P, IMIĘ, NAZWISKO, PENSJA from pracownicy where (ID_D, PENSJA) in (select ID_D, MIN(PENSJA)
from pracownicy group by ID_D);
IV. 4. Zastosowanie optymalizującej kombinacji operatorów ALL i DISTINCT oraz ANY i DISTINCT zamiast funkcji agregujących MAX oraz MIN w bazach Oracle
- Jak działa operator DISTINCT - dotyczy całych krotek i tylko raz wyświetla powtarzające się krotki:
select PENSJA from pracownicy; => 6 wierszy wyświetli
select DISTINCT PENSJA from pracownicy; => 5 wierszy wyświetli
select ID_P, PENSJA from pracownicy; => 6 wierszy wyświetli
select DISTINCT ID_P, PENSJA from pracownicy;
=> także wyświetli 6 wierszy
Bazy danych. Wykład 7
Andrzej Grzybowski - Instytut Fizyki, Uniwersytet Śląski
11