9111


Ćwiczenie 5

Podzapytania

Podzapytania zwracające jeden wiersz

Podzapytania zwracające wiele wierszy

Podzapytanie to wewnętrzny SELECT wykonywany w pierwszej kolejności, po to, aby jego wynik został użyty do wykonania zapytania zewnętrznego.

Podzapytania zwracające pojedynczą wartość można traktować jak zwykłe wyrażenie

.

0x08 graphic
SELECT kolumna_1, kolumna_2, …

FROM tabela

WHERE kolumna = (SELECT kolumna

FROM tabela

WHERE warunek)

ORDER BY kolumna;

warunki porównawcze dzielimy na operatory jednowierszowe (>, =, >=, <, <=) i operatory wielowierszowe (IN, ANY,ALL)

Podzapytania mogą występować również w klauzuli HAVING (przypominamy — klauzula HAVING odnosi się do grup wierszy). Nie istnieje limit na liczbę poziomów zagnieżdżania podzapytań

Operatory ALL i ANY można stosować w podzapytaniach zwracających więcej niż jeden wiersz. Podaje się je w klauzulach WHERE i HAVING razem z operatorami porównywania.

Operator ANY — wiersz zostanie wybrany, jeśli wyrażenie jest zgodne co najmniej z jedną wartością wybraną w podzapytaniu

Operator ALL — warunek musi być spełniony przez wszystkie wartości wybrane w podzapytaniu.

Wybierzmy wszystkich pracowników, którzy zarabiają więcej niż ktokolwiek w departamencie 30:

SELECT ENAME, SAL, DEPTNO

FROM EMP

WHERE SAL > ALL (SELECT DISTINCT SAL

FROM EMP

WHERE DEPTNO=30)

W podzapytaniu nie może występować klauzula ORDER BY. Klauzula ORDER BY może wystąpić tylko raz dla całego zapytania i wtedy musi pojawić się jako ostatnia.

0x08 graphic
0x08 graphic

Zadania do zapytań SQL:

  1. Wybierz urzędników (CLERK) mających pensję poniżej średniej dla wszystkich

  2. Wybierz pracowników dostających najniższą pensję.

  3. Wybierz pracowników, których pensja jest najwyższa w departamentach

  4. Wybierz zawody, w których średnia płaca jest wyższa niż średnia płaca w zawodzie 'MANAGER'

  5. Wybierz wszystkich zatrudnionych na tym samym stanowisku co SMITH

  6. Wyświetl nazwiska i daty zatrudnienia każdego pracownika zatrudnionego w tym samym departamencie co pracownik BLAKE, ale bez pracownika BLAKE.

  7. Wyświetl nazwisko i pensję każdego pracownika, który podlega pracownikowi KING

  8. Wyświetl numer departamentu, nazwisko i stanowisko wszystkich pracowników w departamencie RESEARCH

  9. Znajdź stanowisko o najniższych średnich zarobkach

  10. Znajdź tych pracowników, którzy zostali zatrudnieniu przed przyjęciem do pracy ich kierowników.

  11. Znajdź pracowników zarabiających maksymalna pensję na ich stanowiskach pracy. Uporządkuj ich według malejących zarobków

  12. Wskaż dla każdego departamentu najwcześniej zatrudnionych pracowników.
    Uporządkuj według dat zatrudnienia

Warunek, w którym porównujemy wiele wartości

SELECT ENAME, SAL, DEPTNO

FROM EMP

WHERE (SAL,DEPTNO) IN (SELECT MAX(SAL), DEPTNO

FROM EMP

GROUP BY DEPTNO);

SQL Ćwiczenia Strona 2

Podzapytanie to polecenie SELECT zagnieżdżone w innym poleceniu SELECT

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO----- ------- --------- ----- -------- ------ ------ ------

7839 KING PRESIDENT 81/11/17 5000 10

7698 BLAKE MANAGER 7839 81/05/01 2850 30

7782 CLARK MANAGER 7839 81/06/09 2450 10

7566 JONES MANAGER 7839 81/04/02 2975 20

7654 MARTIN SALESMAN 7698 81/09/28 1250 1400 30

7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30

7844 TURNER SALESMAN 7698 81/09/08 1500 0 30

7900 JAMES CLERK 7698 81/12/03 950 30

7521 WARD SALESMAN 7698 81/02/22 1250 500 30

7902 FORD ANALYST 7566 81/12/03 3000 20

7369 SMITH CLERK 7902 80/12/17 800 20

7788 SCOTT ANALYST 7566 82/12/09 3000 20

7876 ADAMS CLERK 7788 83/01/12 1100 20

7934 MILLER CLERK 7782 82/01/23 1300 10

DEPTNO DNAME LOC

----- ------------ --------

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERATIONS BOSTON



Wyszukiwarka

Podobne podstrony:
9111
9111
9111
9111

więcej podobnych podstron