IV. PODZAPYTAMA
II 'ewnąlrz klauzul WHERE. H. l I 'ING i FROM mogą wystąpić podzapytania mające taką samą /wstać jak zapytania, tylko ujęte « nawiasy Podza/nianie maże wystąpić jako prawy argumehr predykatów =, <, «*, >, >=,o dla określenia jednej wartości, lub IN i NOT IN dla listy
wartości.
1. Znaleźć pracowników z pensją równą minimalnemu zarobkowi w firmie.
SELECT ename, job, sal FROM emp WHERE sal =
(SELECT MIN(sal)
FROM emp);
2. Znaleźć wszystkich pracowników zatrudnionych na tym samym stanowisku co BLAKE.
SELECT ename FROM emp WHERE job =
(SELECT job FROM emp
WHERE ename = 'BLAKE');
3. Znaleźć pracowników o pensjach z listy najniższych zarobków osiąganych w departamentach.
SELECT ename, sal, deptno FROM emp WHERE sal IN
(SELECT MIN(sal)
FROM emp GROUP BY deptno)
4. Znaleźć pracowników o najniższych zarobkach w ich departamentach.
SELECT ename, sal, deptno FROM emp
WHERE (sal, deptno) IN
(SELECT MIN(sal), deptno FROM emp GROUP BY deptno);
5. Stosując kwantyfikator ANY wybrać pracowników zarabiających powyżej najniższego zarobku z departamentu 30.
Predykaty porównań można łączyć- ze słowami kluczowymi oznaczającymi kwantyfikatory SOME (ANY) - odczytywany ..dla pewnego" i ALL odczytywany ,.dla każdego otrzymując w wyniku predykaty.których argumentem matę hyc wyrażeń lista albo podzapylante Operator algebraiczny poprzedzający ALL i listę wartości ma zastosowanie do każdej dowolnej wartości z listy. Czy li > .ALL (I. 2, S) oznacza z- 3.
Operator algebraiczny poprzedzający ANY i listę wartości ma zastosowanie do jakiejkolwiek dowolnei wartości z listy. Czyli > ANY (I. 2. 3j oznacza I.
Przykłady dzatania tych predykatów przedstawione sa u poniższej tabelce:
ALL |
1. Wyniki |
AN] |
2. Wyniki |
SELECT ename, job, deptno FROM emp WHERE sal > ANY
(SELECT DISTINCT sal FROM emp WHERE deptno = 30)
6. Znaleźć pracowników, których zarobki są wyższe od pensji każdego pracownika z departamentu 30.
9