Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treci
O Autorze......................................................................8
Wprowadzenie ...............................................................9
Rozdzia 1. Podstawy jzyka SQL...................................................13
Podstawy baz danych ............................................................................ 13
Jzyk SQL ............................................................................................. 18
wicz .................................................................................................... 19
Podsumowanie ...................................................................................... 19
Spis treci
Dodatek E
Rozdzia 10.
Grupowanie danych
W tym rozdziale opisana jest funkcja grupowania danych, ktra umoliwia
podsumowywanie podzbiorw tabeli. Wprowadzone s te dwie nowe frazy
instrukcji :
i .
!"#$%&'(%)
************
+
86
Tworzenie grup
Grupy tworzy si za pomoc frazy
w instrukcji . Najatwiej
zrozumie to na przykadzie:
#,
-./#)
#
******************
.'(0
&'(+
-'(1
87
Okrelanie kolumn za pomoc pooe wzgldnych. Niektre implementacje SQL umoliwiaj podanie we frazie
pooe
kolumn z listy . Mona wtedy na przykad napisa
(), aby grupowanie najpierw odbyo si wzgldem drugiej kolumny,
a nastpnie pierwszej. Cho ten skrtowy zapis jest bardzo kuszcy, nie obsuguj go wszystkie implementacje, a dodatkowo
niesie ze sob ryzyko pojawienia si bdw po zmianie kolejnoci
kolumn.
(04-05-28) 87
88
Filtrowanie grup
Poza sam moliwoci grupowania danych, jzyk SQL oferuje take filtrowanie na podstawie danych zebranych dla poszczeglnych grup. Na przykad
mona wywietli wszystkich klientw, ktrzy dokonali przynajmniej dwch
zamwie. Takie filtrowanie musi si odbywa wobec penych grup, a nie poszczeglnych wierszy.
Nie jest moliwe posuenie si tutaj fraz opisan w rozdziale 4., gdy
powoduje ona filtrowanie wierszy i to jeszcze przed rozpoczciem grupowania. Inaczej mwic, fraza nie wie, czym jest grupowanie.
Jaka jest wic alternatywa dla ? Jzyk SQL wprowadza dodatkow fraz
. Jest ona bardzo podobna do . W zasadzie wszystkie opisane do
tej pory techniki filtrowania zwizane z mog zosta take uyte we
frazie . Jedyna rnica polega na tym, i filtruje wiersze, a
grupy.
Fraza obsuguje wszystkie operatory frazy . Rozdziay 4.
i 5. opisyway proste i zaawansowane filtrowanie danych. Wszystkie opisane tam operatory mona z powodzeniem stosowa we
frazie . Skadnia jest identyczna, zmienia si tylko sowo
kluczowe.
,
2345
62345
-./
"
78 -
9$1)
2345
*********************
(''''''''(1
89
Mona si przekona, i fraza nie przeprowadziaby poprawnego filtrowania, poniewa musi ono bazowa na wartoci z agregacji grupy, a nie wartoci znajdujcych si w poszczeglnych wierszach.
Rnica midzy i . Mona na to zagadnienie spojrze
inaczej. Fraza filtruje dane przed grupowaniem, natomiast
po. Jest to wana rnica wiersze wyeliminowane przez
fraz w ogle nie zostan wzite pod uwag przy tworzeniu
grup. Powoduje to zmian wartoci pl obliczanych, a tym samym
zmian wywietlanych grup, gdy przeprowadzane jest filtrowanie.
Czy zachodzi potrzeba jednoczesnego stosowania fraz i w jednym zapytaniu? W pewnych sytuacjach jest ona nawet konieczna. Przypumy
na przykad, i poprzednie zapytanie powinno zwrci dowolnych klientw
z wicej ni jednym zamwieniem, ale pod uwag naley bra tylko ostatni rok.
W takiej sytuacji fraza spowoduje przeanalizowanie zamwie tylko
z ostatnich 12 miesicy, a fraza wskae tylko klientw z co najmniej
dwoma zamwieniami.
Oto inny przykad. Zapytanie powoduje wywietlenie listy dostawcw z wicej ni jednym produktem o cenie powyej 10 zotych.
#,
!"459$('
-./#
"
78 -
9$1)
#
******************
.'(0
-'(1
Zapytanie to wymaga krtkiego wyjanienia. Pierwszy wiersz to prosta instrukcja z funkcj agregujc podobnie jak w poprzednich przykadach. Fraza filtruje wszystkie wiersze, ktrych "#,-! jest mniejsza od
10 zotych. Nastpnie dane s grupowane pod ktem , a fraza
przepuszcza tylko grupy zawierajce wicej ni jedno zamwienie. Bez frazy
zostaby pobrany dodatkowy wiersz, poniewa dostawca sprzedaje
trzy produkty po cenie poniej 10 zotych.
(04-05-28) 89
90
#,
-./#
"
78 -
9$1)
#
******************
.'(0
&'(+
-'(1
Grupowanie i sortowanie
Trzeba zda sobie spraw z tego, i frazy
i
s bardzo rne,
cho wykonuj podobne zadanie. Tabela 10.1 wymienia rnice wystpujce
midzy obiema frazami.
Tabela 10.1. Frazy ORDER BY i GROUP BY
ORDER BY
GROUP BY
Stosowanie frazy nie jest zawsze Stosowanie frazy jest konieczne, jeli uywa si
wymagane.
kolumn (lub wyrae) z funkcjami agregujcymi.
Pierwsza rnica wymieniona w tabeli 10.1 jest niezmiernie wana. Cho nie
jest to wymagane, to najczciej grupy bd wywietlane w sposb posortowany. Co wicej, cho dany system moe zawsze sortowa grupy po zastosowaniu frazy
, konieczny moe okaza si inny sposb sortowania. Cho
grupowanie odbywa si w taki, a nie inny sposb, nie oznacza to jednoczenie,
91
i sortowanie take musi odbywa si w ten sam sposb. Zawsze mona zastosowa opcjonaln fraz
, aby wymusi odpowiednie sortowanie pogrupowanych danych.
Nie zapominaj o frazie
. Oglnie rzecz ujmujc, za kadym
razem, gdy stosuje si fraz
, powinno si take stosowa fraz
, gdy jest to jedyny sposb zapewnienia odpowiedniego sortowania danych. Nigdy nie naley polega na sortowaniu za pomoc
.
2524,
44245
4245 62345
-./2524
"
78 -
9$0)
252444245
*****************
1''':0
1''';<
1'''=<
1'''>0
Aby posortowa wyjcie na podstawie liczby zamwionych elementw, wystarczy tylko doda odpowiedni fraz .
2524,
44245
4245 62345
-./2524
"
78 -
9$0
&./44245 ,2524)
252444245
*****************
1''':0
(04-05-28) 91
92
1'''>0
1''';<
1'''=<
Opis
Wymagane
tak
!"
filtrowanie wierszy
nie
-./
tworzenie grup
" 78 -
filtrowanie grup
nie
&./
sortowanie wyjcia
nie
Podsumowanie
W rozdziale 9. czytelnik zapozna si z zastosowaniem funkcji agregujcych.
W powyszym rozdziale wykorzysta fraz
do przeprowadzania funkcji agregujcych wzgldem okrelonych grup elementw. Fraza suy
do filtrowania grup. Dodatkowo w rozdziale pojawio si dokadne wyjanienie
rnic midzy
i
oraz midzy i .