dbgrupy NDB6M6RZHXU2FTGKOMBLIUQSMA6GZ3LCS2WYICQ NDB6M6RZHXU2FTGKOMBLIUQSMA6GZ3LCS2WYICQ






Bazy Danych - grupowanie




Robert Chwastek - Bazy danych








Moja strona główna




Spis treści




Poprzednia strona







Grupowanie



Klauzule GROUP BY i HAVING występujące w rozkazie SELECT
pozwalają dzielić relację wynikową na grupy, wybierać niektóre z tych grup
i na każdej z nich z osobna wykonywać pewne (dozwolone przez system) operacje.
Operacje te działają na wszystkich wierszach wchodzących w skład grupy.
Na samym końcu zwracana jest tylko zbiorcza informacja o wybranych grupach
(nie zwraca się wszystkich wierszy wchodzących w skład grupy).

Klauzula GROUP BY służy do dzielenia krotek relacji na
mniejsze grupy. Sposób takiego podziału ilustruje przykład:

SELECT stanowisko, avg(placa_podstawowa)


FROM pracownicy


GROUP BY stanowisko ;



Istnieje możliwość odrzucenia pewnych krotek przed podziałem
na grupy. Dokonuje się tego za pmocą klauzuli WHERE:

SELECT stanowisko, avg(placa_podstawowa)


FROM pracownicy


WHERE stanowisko != 'KIEROWCA'


GROUP BY stanowisko ;


Dzielenie na grupy może być zagnieżdżane, co umożliwia
wydzielanie podgrup w uprzednio znalezionych podgrupach. W przykładzie
poniżej wszyscy pracownicy są dzieleni na wydziały, w których pracują,
a w ramach każdego wydziały grupowani według stanowiska:

SELECT wydzial, stanowisko,
avg(placa_podstawowa)

FROM pracownicy


GROUP BY nr_wydzialu,
stanowisko ;


Klauzula HAVING ogranicza wyświetlanie grup do tych, które
spełniają określony warunek. Chcąc wyświetlić tylko te grupy, w których
płaca podstawowa przynajmniej jednego pracownika jest większa niż 3 000
należy zastosować następujące zapytanie:

SELECT stanowisko, max(placa_podstawowa)


FROM pracownicy


GROUP BY stanowisko


HAVING max(placa_podstawowa)
> 3000 ;











Moja strona główna




Spis treści




Następna strona

Wszelkie komentarze lub poprawki prześlij proszę na adres:
Robert.Chwastek@kt.agh.edu.pl
© Robert Chwastek, listopad 1996






Wyszukiwarka