79737 ullman155 (2)

79737 ullman155 (2)



316 5. JĘZYK BAZ DANYCH SQI-

316 5. JĘZYK BAZ DANYCH SQI-

Koszt usuwania powtórzeń

Jeśliby przyjąć założenie, że stosowanie operatora DISTINCT nie ma żadnych konsekwencji, to można by ulec pokusie umieszczania go w każdej instrukcji SELFCT. Jednakże w rzeczywistości usuwanie powtórzeń jest bardzo kosztowne. Przede wszystkim trzeba dokładnie uporządkować relację, po to by powtarzające się krotki występowały obok siebie, bowiem tylko grupując krotki, można stwierdzić, czy daną krotkę należy usunąć. Często zdarza się tak, że uporządkowanie krotek w ten sposób trwa dłużej niż wykonanie zapytania. Jeśli zatem zależy nam na tym, aby zapytanie było wykonane szybko, to trzeba dokładnie przemyśleć, czy zależy nam również na usunięciu powtarzających się krotek.


W wyniku tego nowego zapytania para (tytuł i rok) pojawi się tyle razy, ile razy występuje w obu relacjach Film oraz GwiazdyW. Na przykład, jeśli pewien film jest zapisany jeden raz w relacji Film, a występują w nim trzy gw iazdy filmowe, co ma swój obraz w postaci trzech różnych krotek w relacji GwiazdyW, to para (tytuł, rok), oznaczająca ten film, pojawi się w wyniku sumowania cztery' razy.

Podobnie jak w przypadku sumy operatory INTERSECT ALL i EXCEPT ALL są operatorami przecięcia i różnicy w znaczeniu wiclozbiorów. A zatem, jeśli S i R oznaczają pewne relacje, to wynik wyrażenia:

RINTERSECT ALLS

jest relacja^, a liczba wystąpień krotki t stanowi minimum spośród liczby wystąpień tej krotki / w relacji R i liczby wystąpień w relacji .V.

Z kolei w wyniku wyrażenia

R £XCEPT allS1

krotka t występuje tyle razy, ile wynosi wartość różnicy liczby wystąpień krotki t w relacji R i liczby wystąpień krotki t w relacji S, o ile wartość różnicy jest dodatnia. Powyższe stwierdzenia są zgodne z definicjami działań na wiclozbiorach, które zostały przedstawione w p. 4.6.2.

5.4.3. Ćwiczenia do podrozdziału 5.4

Ćwiczenie 5.4.1. Należy wszystkie zapytania z ćwiczenia 4.1.1 zapisać w SQL tak, aby ich wyniki nie zawierały powtórzeń.

Ćwiczenie 5.4.2. Należy wszystkie zapytania z ćwiczenia 4.1.3 zapisać w' SQL tak, aby ich wyniki nie zawierały powtórzeń.

!Ćwiczenie 5.4.3. Dla każdej odpowiedzi udzielonej w ćwiczeniu 5.3.1 należy określić, czy wyniki zapytań będą zawierać powtórzenia. Jeśli tak, to należy zapisać zapytanie w taki sposób, aby zostały one wyeliminowane. Jeśli z kolei wyniki nie zawierają powtórzeń, to należy zapisać te zapytania bez podzapytań, ale tak, by również wyniki nic zawierały powtórzeń.

!Ćwiczenie 5.4.4. Powtórzyć polecenie z poprzedniego ćwiczenia dla odpowiedzi do ćwiczenia 5.3.2.

5.5. Agregowanie

Inną klasę stanowią działania, które także traktują relację jako argument, a służą do określenia zbiorczych wartości dla kolumn. Przez agregowanie rozumie się takie działanie, które z listy wartości zapisanych w kolumnie tworzy jedną wartość. Dobrymi przykładami agregowania są sumowanie wartości w kolumnie lub obliczanie wartości średniej. W SQL można nie tylko agregować wartości z kolumn, ale także można grupować krotki relacji zgodnie z zadanym kryterium, na przykład według wartości w innej kolumnie, a potem agregować wartości wr poszczególnych grupach.

5.5.1. Operatory agregowania

W SQL jest pięć operatorów, które można zastosować do wartości w kolumnach relacji i za pomocą których można utworzyć jakieś podsumowanie dla tej kolumny. A oto one:

1.    SUM, służy do obliczenia sumy wszystkich wartości w kolumnie.

2.    AVG, służy do obliczenia wartości średniej wszystkich wartości w kolumnie.

3.    MIN, służy- do obliczenia najmniejszej wartości w kolumnie.

4.    MAX, służy do obliczenia największej wartości w kolumnie.

5.    COUNT jest funkcją, która służy' do określenia liczby wartości występujących w kolumnie (obejmuje także powtórzenia, chyba że w klauzuli SELECT występuje polecenie DISTINCT).

Argumentami tych operatorów wyrażenia o wartościach skalarnych, najczęściej to nazwy kolumn, a zapisuje się je w klauzuli SELECT.

PRZYKŁAD 5.22

Następujące zapytanie służy do określenia średniej ceny sieci należących do wszystkich prezesów.

SF.LECT AVG (cenaSieci)

FROM FilmDyr;


Wyszukiwarka

Podobne podstrony:
ullman141 (2) 288 5 JĘZYK BAZ DANYCH SQI. W przykładzie 5.1 występuje porównanie: nazwaStudia = Dis
ullman173 (2) 352 5. JĘZYK BAZ DANYCH SQI- d) Wyjaśnić, w jaki sposób zmienić wyrażenie utworzone w
26440 ullman141 (2) 288 5 JĘZYK BAZ DANYCH SQI. W przykładzie 5.1 występuje porównanie: nazwaStudia
ullman142 (2) 290 5. JEŻYK BAZ DANYCH SQL drugiego tekstu. Podobnie jak to występowało w przypadku t
ullman147 (2) 300 5. JĘZYK BAZ DANYCH SOL krotkowych. Dla każdego przypisania jest określana wartość
ullman156 (2) J 18 5. JEŻYK BAZ DANYCH SOL Zauważmy, że w tym zapytaniu wcale nie ma klauzuli WHERE,

więcej podobnych podstron