SQL do zaawansowanych analiz danych – część 1.

Transkrypt

SQL do zaawansowanych analiz danych – część 1.
SQL do zaawansowanych
analiz danych – część 1.
Rozszerzenia SQL
Materiały laboratoryjne
Bartosz Bębel
Politechnika Poznańska, Instytut Informatyki
Wprowadzenie do ć wiczenia
W niniejszym ćwiczeniu student nabierze praktycznych umiejętności w posługiwaniu się poleceniami
rozszerzającymi język SQL o definiowanie złożonych schematów grupowania przy analizach danych:
GROUP BY, ROLLUP, CUBE, PIVOT i UNPIVOT.
Wszystkie zadania będą realizowane na danych przedstawionego poniżej schematu relacyjnego.
Ćwiczenia należy realizować w bazie dblab01. Twoje konto bazodanowe posiada nazwę utworzoną z
dodania do Twojego numeru indeksu przedrostka "BIO" (np. BIO12345 dla numer indeksu 12345).
Początkowe hasło jest takie samo jak nazwa użytkownika. Używanym w ćwiczeniu narzędziem jest
Oracle SQL Developer.
Cwiczenie 1. Proste grupowanie
W niniejszym ćwiczeniu będziemy wykorzystywać klauzulę GROUP BY w podstawowej formie oraz
klauzulę HAVING.
1. Zbuduj zapytanie, które znajdzie liczbę wszystkich studentów (tabela STUDENCI).
LICZBA
---------12615
2. Zmodyfikuj powyższe zapytanie w taki sposób, aby otrzymać liczbę studentów z podziałem na
płcie. Wynik posortuj wg płci.
PLEC
LICZBA
--------- ---------kobiety
5900
mężczyźni
6715
3. Policz, ile ocen zdobyli studenci w całym roku akademickim 2005/06 (tabela OCENY).
LICZBA_OCEN
----------105425
4. Rozszerz poprzednie zapytanie w taki sposób, aby otrzymać liczbę ocen w roku akademickim
2005/06 z podziałem na semestry: zimowy i letni.
RODZAJ_SEMESTRU LICZBA_OCEN
--------------- ----------letni
50196
zimowy
55229
5. Ogranicz analizy ocen do semestru akademickim 2005/06 zimowego. Poznaj rozkład ocen w
tym semestrze (rozkład ocen – liczba wystąpień danej oceny). Pomiń w wyniku rekordy bez
oceny (z pustą wartością kolumny ocena).
OCENA LICZBA_OCEN
---------- ----------2
4154
3
15710
3,5
7163
4
11809
4,5
4741
5
10493
6 wierszy zostało wybranych.
6. Tym razem podziel zbiór ocen z semestru akademickiego 2005/06 zimowego na trzy
kategorie: "oceny słabe": 2 i 3, "oceny średnie": 3.5 oraz 4 i "oceny wybitne": 4.5 i 5. Znajdź
liczbę ocen w każdej kategorii. Wykorzystaj konstrukcję CASE.
KATEGORIA
LICZBA_OCEN
------------- ----------oceny słabe
19864
oceny średnie
18972
oceny wybitne
15234
7. Policz, ilu studentów studiuje na poszczególnych kierunkach (użyj połączonych tabel
STUDENCI i KIERUNKI_STUDIOW). Posortuj wynik wg malejącej liczby studentów.
KIERUNEK_STUDIOW
STUDENTOW
------------------------------------------------------------ ---------Pedagogika (stacjonarne)
1487
Turystyka i rekreacja (stacjonarne)
1128
Ekonomia (stacjonarne)
1040
Wychowanie fizyczne (stacjonarne)
1024
Turystyka i rekreacja (niestacjonarne)
1007
Pedagogika (niestacjonarne)
1007
Wychowanie fizyczne (niestacjonarne)
910
Ekonomia (niestacjonarne)
869
Elektrotechnika (niestacjonarne)
852
Rolnictwo (stacjonarne)
832
Elektrotechnika (stacjonarne)
697
Mechanika i budowa maszyn (niestacjonarne)
566
Mechanika i budowa maszyn (stacjonarne)
533
Rolnictwo (niestacjonarne)
334
Wychowanie fizyczne z edukacją zdrowotną (niestacjonarne)
176
Edukacja artystyczna (stacjonarne)
153
16 wierszy zostało wybranych.
8. Rozbuduj poprzednie zapytanie w taki sposób, aby pominąć kierunki, na których studiuje
mnie niż 1000 osób (użyj w zapytaniu klauzuli HAVING).
KIERUNEK_STUDIOW
STUDENTOW
------------------------------------------------------------ ---------Pedagogika (stacjonarne)
1487
Turystyka i rekreacja (stacjonarne)
1128
Ekonomia (stacjonarne)
1040
Wychowanie fizyczne (stacjonarne)
1024
Turystyka i rekreacja (niestacjonarne)
1007
Pedagogika (niestacjonarne)
1007
6 wierszy zostało wybranych.
9. Przekształć zapytanie z punktu 7. w taki sposób, aby pokazywało liczbę studentów na
poszczególnych rodzajach studiów (dodaj połączenie z tabelą RODZAJE_STUDIOW, zmień
kolumnę grupującą). Wynik posortuj wg nazw rodzajów studiów.
RODZAJ_STUDIOW
STUDENTOW
------------------------------------------------------------ ---------Niestacjonarne licencjackie
3969
Niestacjonarne zawodowe
1752
Stacjonarne licencjackie
4832
Stacjonarne zawodowe
2062
10. Do wyniku zadania 9. dodaj wyliczenie średnich ocen, zdobytych przez studentów
studiujących na poszczególnych rodzajach studiów (dodaj połączenie z tabelą OCENY, zwróć
uwagę, że mogą istnieć studenci bez oceny!). Średnią powinna zostać zaokrąglona do dwóch
miejsc po przecinku.
RODZAJ_STUDIOW
STUDENTOW
SREDNIA
------------------------------------------------------- ---------- ---------Niestacjonarne licencjackie
3969
3.77
Niestacjonarne zawodowe
1752
3.38
Stacjonarne licencjackie
4832
3.98
Stacjonarne zawodowe
2062
3.59
11. Tym razem policz, ilu różnych studentów studiowało każdy z przedmiotów (tabele:
PRZEDMIOTY i OCENY). Jeśli student kilkukrotnie studiował dany przedmiot (otrzymał kilka
ocen z tego samego przedmiotu), licz go jeden raz.
PRZEDMIOT
STUDENTOW
------------------------------------------------------------ ---------Przedmiot 186
4835
Przedmiot 194
3371
Przedmiot 180
2962
Przedmiot 233
2937
Przedmiot 179
2699
Przedmiot 223
2311
Przedmiot 442
2261
Przedmiot 554
2253
Przedmiot 222
2128
Przedmiot 201
2007
...
757 wierszy zostało wybranych.
12. Zmodyfikuj polecenie w zadaniu 11. w taki sposób, aby otrzymać tylko informacje o
najpopularniejszym przedmiocie (zastosuj podzapytanie).
PRZEDMIOT
STUDENTOW
------------------------------------------------------------ ---------Przedmiot 186
4835
Cwiczenie 2. Pó łkostka i kostka danych
W niniejszym ćwiczeniu rozszerzymy zakres stosowanych mechanizmów o klauzule ROLLUP i CUBE.
1. Zbuduj zapytanie, które ponownie znajdzie liczbę studentów z podziałem na płcie. Tym razem
w wyniku ma się pojawić wiersz z całkowitą liczbą studentów (użyj klauzuli ROLLUP).
PLEC
LICZBA
--------- ---------kobieta
5900
mężczyzna
6715
12615
2. Zmodyfikuj zapytanie z punktu 2. tak, aby w wierszu podsumowania pojawił się napis
"wszyscy" (użyj funkcji GROUPING z konstrukcją CASE).
PLEC
LICZBA
--------- ---------kobieta
5900
mężczyzna
6715
wszyscy
12615
3. Podaj liczby ocen, zdobyte przez studentów, w rozbiciu na lata akademickie. Wyświetl
również podsumowanie zawierające całkowitą liczbę ocen (użyj klauzuli ROLLUP). Weź pod
uwagę wszystkie oceny (niezależnie od ich wartości, być może również pustej).
ROK_AKADEMICKI LICZBA_OCEN
-------------- ----------2000/01
24872
2001/02
45203
2002/03
61930
2003/04
78705
2004/05
94217
2005/06
105425
2006/07
106332
516684
8 wierszy zostało wybranych.
4. Rozszerz zapytanie z punkt 3. o dodatkowy poziom sumowania – wyświetl również liczbę
ocen zdobytych w poszczególnych latach akademickich.
ROK_AKADEMICKI
-------------2000/01
2000/01
2000/01
2001/02
2001/02
2001/02
2002/03
2002/03
2002/03
2003/04
2003/04
2003/04
2004/05
2004/05
2004/05
2005/06
2005/06
2005/06
2006/07
2006/07
2006/07
RODZAJ_SEMESTRU LICZBA_OCEN
--------------- ----------24872
zimowy
12580
letni
12292
45203
zimowy
22297
letni
22906
61930
zimowy
31291
letni
30639
78705
zimowy
40147
letni
38558
94217
zimowy
48631
letni
45586
105425
zimowy
55229
letni
50196
106332
zimowy
53446
letni
52886
516684
22 wierszy zostało wybranych.
5. Zmodyfikuj wynik punktu 4. w taki sposób, aby oznaczyć odpowiednim tekstem
podsumowania.
ROK AKADEMICKI
-------------2000/01
2000/01
2000/01
2001/02
2001/02
2001/02
2002/03
2002/03
2002/03
2003/04
...
2005/06
2005/06
2005/06
2006/07
2006/07
2006/07
wszystkie lata
RODZAJ SEMESTRU LICZBA_OCEN
--------------- ----------zimowy
12580
letni
12292
semestry razem
24872
zimowy
22297
letni
22906
semestry razem
45203
zimowy
31291
letni
30639
semestry razem
61930
zimowy
40147
zimowy
letni
semestry razem
zimowy
letni
semestry razem
22 wierszy zostało wybranych.
55229
50196
105425
53446
52886
106332
516684
6. Zbuduj zapytanie, które wyliczy, ilu studentów studiuje na każdym kierunku studiów, każdym
rodzaju studiów i każdej kategorii studiów. Dołącz do wyniku również podsumowanie
zawierające całkowitą liczbę studentów (użyj klauzuli ROLLUP).
KATEGORIA
--------N
N
N
N
N
N
N
N
N
N
N
S
S
S
S
S
S
S
S
S
S
S
RODZAJ
-----NL
NL
NL
NL
NL
NL
NZ
NZ
NZ
NZ
SL
SL
SL
SL
SL
SL
SZ
SZ
SZ
SZ
KIERUNEK LICZBA_STUDENTOW
-------- ---------------NLK1
869
NLK2
1007
NLK3
1007
NLK4
910
NLK5
176
3969
NZK1
566
NZK2
334
NZK3
852
1752
5721
SLK1
153
SLK2
1040
SLK3
1487
SLK4
1128
SLK5
1024
4832
SZK1
697
SZK2
533
SZK3
832
2062
6894
12615
23 wierszy zostało wybranych.
7. Zmodyfikuj powyższe zapytanie tak, aby otrzymać poniższy wynik.
KATEGORIA
------------------N
N
N
N
N
N
N
...
N
N
S
...
S
S
S
...
S
S
wszystkie kategorie
RODZAJ
----------------NL
NL
NL
NL
NL
NL
NZ
KIERUNEK
LICZBA_STUDENTOW
------------------ ---------------NLK1
869
NLK2
1007
NLK3
1007
NLK4
910
NLK5
176
wszystkie kierunki
3969
NZK1
566
NZ
wszystkie kierunki
wszystkie rodzaje wszystkie kierunki
SL
SLK1
1752
5721
153
SL
SL
SZ
SLK5
wszystkie kierunki
SZK1
1024
4832
697
SZ
wszystkie kierunki
wszystkie rodzaje wszystkie kierunki
wszystkie rodzaje wszystkie kierunki
2062
6894
12615
23 wierszy zostało wybranych.
8. Zbuduj zapytanie, które pokaże, ilu studentów z podziałem na płcie pochodzi z
poszczególnych województw (użyj połączenia tabel STUDENCI i MIASTA, zastosuj zwykłe
grupowanie).
WOJEWODZTWO
-------------------dolnośląskie
dolnośląskie
kujawsko-pomorskie
kujawsko-pomorskie
lubelskie
lubelskie
lubuskie
lubuskie
łódzkie
łódzkie
małopolskie
małopolskie
mazowieckie
mazowieckie
opolskie
opolskie
podkarpackie
podlaskie
pomorskie
pomorskie
śląskie
śląskie
świętokrzyskie
świętokrzyskie
warmińsko-mazurskie
warmińsko-mazurskie
wielkopolskie
wielkopolskie
zachodniopomorskie
zachodniopomorskie
PLEC
STUDENTOW
--------- ---------kobieta
664
mężczyzna
835
kobieta
15
mężczyzna
21
kobieta
1
mężczyzna
3
kobieta
414
mężczyzna
424
kobieta
22
mężczyzna
25
kobieta
2
mężczyzna
1
kobieta
7
mężczyzna
6
kobieta
5
mężczyzna
2
mężczyzna
1
kobieta
1
kobieta
4
mężczyzna
8
kobieta
33
mężczyzna
19
kobieta
2
mężczyzna
4
kobieta
2
mężczyzna
4
kobieta
4717
mężczyzna
5354
kobieta
10
mężczyzna
8
30 wierszy zostało wybranych.
9. Rozszerz polecenie z poprzedniego punktu w ten sposób, aby w wyniku otrzymać również
podsumowanie liczby studentów w każdym województwie bez podziału na płcie,
podsumowanie każdej płci bez względu na województwa oraz podsumowanie całkowite.
Wynik będzie pełną kostką danych.
WOJEWODZTWO
-------------------dolnośląskie
dolnośląskie
dolnośląskie
kujawsko-pomorskie
kujawsko-pomorskie
kujawsko-pomorskie
lubelskie
lubelskie
lubelskie
lubuskie
lubuskie
lubuskie
łódzkie
łódzkie
łódzkie
małopolskie
małopolskie
małopolskie
mazowieckie
mazowieckie
mazowieckie
opolskie
opolskie
opolskie
podkarpackie
podkarpackie
podlaskie
podlaskie
pomorskie
pomorskie
pomorskie
śląskie
śląskie
śląskie
świętokrzyskie
świętokrzyskie
świętokrzyskie
warmińsko-mazurskie
warmińsko-mazurskie
warmińsko-mazurskie
wielkopolskie
wielkopolskie
wielkopolskie
zachodniopomorskie
zachodniopomorskie
zachodniopomorskie
PLEC
STUDENTOW
--------- ---------kobieta
664
mężczyzna
835
1499
kobieta
15
mężczyzna
21
36
kobieta
1
mężczyzna
3
4
kobieta
414
mężczyzna
424
838
kobieta
22
mężczyzna
25
47
kobieta
2
mężczyzna
1
3
kobieta
7
mężczyzna
6
13
kobieta
5
mężczyzna
2
7
mężczyzna
1
1
kobieta
1
1
kobieta
4
mężczyzna
8
12
kobieta
33
mężczyzna
19
52
kobieta
2
mężczyzna
4
6
kobieta
2
mężczyzna
4
6
kobieta
4717
mężczyzna
5354
10071
kobieta
10
mężczyzna
8
18
kobieta
5899
mężczyzna
6715
12614
49 wierszy zostało wybranych.
10. Dodaj do zbioru studentów nowy rekord, opisujący studenta o identyfikatorze 17000, bez
przypisanego kierunku, pochodzącego z Poznania (identyfikator 3303), bez daty urodzenia i
płci. Następnie ponownie wykonaj zapytanie z punktu 9. Co zaobserwowałaś/eś?
insert into studenci(student_id, miasto_id) values(17000 , 3303);
select …
WOJEWODZTWO
-------------------dolnośląskie
dolnośląskie
dolnośląskie
kujawsko-pomorskie
kujawsko-pomorskie
kujawsko-pomorskie
...
warmińsko-mazurskie
warmińsko-mazurskie
warmińsko-mazurskie
wielkopolskie
wielkopolskie
wielkopolskie
wielkopolskie
zachodniopomorskie
zachodniopomorskie
zachodniopomorskie
PLEC
STUDENTOW
--------- ---------kobieta
664
mężczyzna
835
1499
kobieta
15
mężczyzna
21
36
kobieta
mężczyzna
kobieta
mężczyzna
kobieta
mężczyzna
kobieta
mężczyzna
2
4
6
4717
5354
1
10072
10
8
18
5899
6715
12615
1
51 wierszy zostało wybranych.
11. Popraw zapytanie z poprzedniego punktu tak, aby wynik był zrozumiały dla analityka.
WOJEWODZTWA
-------------------dolnośląskie
dolnośląskie
kujawsko-pomorskie
kujawsko-pomorskie
kujawsko-pomorskie
...
wielkopolskie
wielkopolskie
wielkopolskie
wielkopolskie
zachodniopomorskie
zachodniopomorskie
zachodniopomorskie
Województwa razem
Województwa razem
Województwa razem
Województwa razem
PLCI
STUDENTOW
----------------- ---------kobieta
664
Płcie razem
1499
kobieta
15
mężczyzna
21
Płcie razem
36
kobieta
mężczyzna
płeć nieokreślona
Płcie razem
kobieta
mężczyzna
Płcie razem
kobieta
mężczyzna
Płcie razem
płeć nieokreślona
51 wierszy zostało wybranych.
12. Usuń dodanego w punkcie 10. studenta.
delete studenci where student_id = 17000;
commit;
4717
5354
1
10072
10
8
18
5899
6715
12615
1
13. Dokonaj analizy średnich ocen, zdobytych przez studentów w ramach poszczególnych form
zaliczenia (egzamin, zaliczenie, itd.) z poszczególnych rodzajów zajęć (wykład, ćwiczenia, itd.).
W tym celu zbuduj kostkę danych z wymiarami rodzaj zaliczenia i rodzaj zajęć, miarą kostki
będzie średnia ocen (zaokrąglona do dwóch miejsc po przecinku), zdobyta przez studentów z
danego rodzaju zajęć zaliczanego przez dany rodzaj zaliczenia (użyj tabel OCENY,
RODZAJE_ZAJEC i RODZAJE_ZALICZEN). Pomiń w analizach rodzaj zaliczenia "bez oceny".
RODZAJ_ZALICZENIA
-----------------------------egzamin
egzamin
egzamin
egzamin
egzamin
ocena
ocena
ocena
ocena
ocena
ocena
ocena
zaliczenie
zaliczenie
zaliczenie
zaliczenie
zaliczenie
zaliczenie
wszystkie rodzaje zaliczenia
wszystkie rodzaje zaliczenia
wszystkie rodzaje zaliczenia
wszystkie rodzaje zaliczenia
wszystkie rodzaje zaliczenia
wszystkie rodzaje zaliczenia
wszystkie rodzaje zaliczenia
RODZAJ_ZAJEC
SREDNIA_OCEN
--------------------------------- -----------ćwiczenia
3.64
laboratorium
3.45
projekt
3.74
wykład
3.53
wszystkie rodzaje zajęć
3.54
ćwiczenia
3.86
laboratorium
3.77
praktyka
4.72
projekt
3.78
seminarium
4.5
wykład
3.92
wszystkie rodzaje zajęć
3.87
ćwiczenia
4.52
laboratorium
3.56
praktyka
4.22
projekt
4.61
wykład
4.05
wszystkie rodzaje zajęć
4.41
ćwiczenia
3.85
laboratorium
3.76
praktyka
4.65
projekt
3.86
seminarium
4.5
wykład
3.67
wszystkie rodzaje zajęć
3.78
25 wierszy zostało wybranych.
14. Zbuduj zapytanie, które wyliczy zbiór danych, zawierający analizę liczby studentów na
poszczególnych rodzajach studiów w zależności od płci (użyj klauzuli GROUPING SETS).
RODZAJ_STUDIOW
------------------------------------------------------Niestacjonarne licencjackie
Niestacjonarne licencjackie
Niestacjonarne zawodowe
Niestacjonarne zawodowe
Stacjonarne licencjackie
Stacjonarne licencjackie
Stacjonarne zawodowe
Stacjonarne zawodowe
8 wierszy zostało wybranych.
PLEC
LICZBA_STUD
--------- ----------kobieta
2168
mężczyzna
1801
kobieta
96
mężczyzna
1656
kobieta
3128
mężczyzna
1704
kobieta
508
mężczyzna
1554
15. Rozbuduj zapytanie z poprzedniego punktu, dodając do wyniku analizę liczby studentów z
poszczególnych województw w zależności od płci.
RODZAJ_STUDIOW
-----------------------------Niestacjonarne licencjackie
Niestacjonarne licencjackie
Niestacjonarne zawodowe
Niestacjonarne zawodowe
Stacjonarne licencjackie
Stacjonarne licencjackie
Stacjonarne zawodowe
Stacjonarne zawodowe
PLEC
--------kobieta
mężczyzna
kobieta
mężczyzna
kobieta
mężczyzna
kobieta
mężczyzna
kobieta
kobieta
kobieta
kobieta
kobieta
kobieta
kobieta
kobieta
kobieta
kobieta
kobieta
kobieta
WOJEWODZTWO
LICZBA_STUD
-------------------- ----------2168
1801
96
1656
3127
1704
508
1554
dolnośląskie
664
kujawsko-pomorskie
15
lubelskie
1
lubuskie
414
łódzkie
22
małopolskie
2
mazowieckie
7
opolskie
5
podlaskie
1
pomorskie
4
śląskie
33
świętokrzyskie
2
mężczyzna
mężczyzna
mężczyzna
mężczyzna
mężczyzna
mężczyzna
mężczyzna
mężczyzna
mężczyzna
mężczyzna
małopolskie
mazowieckie
opolskie
podkarpackie
pomorskie
śląskie
świętokrzyskie
warmińsko-mazurskie
wielkopolskie
zachodniopomorskie
...
38 wierszy zostało wybranych.
1
6
2
1
8
19
4
4
5354
8
16. Dokonaj kolejnej modyfikacji zapytania – tym razem zamiast analizy liczby studentów w
zależności od płci na poszczególnych rodzajach studiów ma pojawić się analiza liczby
studentów na poszczególnych rodzajach studiów bez względu na płeć.
RODZAJ_STUDIOW
PLEC
------------------------------ --------Niestacjonarne licencjackie
Niestacjonarne zawodowe
Stacjonarne licencjackie
Stacjonarne zawodowe
kobieta
kobieta
kobieta
kobieta
kobieta
kobieta
kobieta
kobieta
kobieta
kobieta
kobieta
kobieta
kobieta
kobieta
kobieta
mężczyzna
mężczyzna
mężczyzna
mężczyzna
mężczyzna
mężczyzna
mężczyzna
mężczyzna
mężczyzna
mężczyzna
mężczyzna
mężczyzna
mężczyzna
mężczyzna
mężczyzna
34 wierszy zostało wybranych.
WOJEWODZTWO
LICZBA_STUD
-------------------- ----------3969
1752
4831
2062
dolnośląskie
664
kujawsko-pomorskie
15
lubelskie
1
lubuskie
414
łódzkie
22
małopolskie
2
mazowieckie
7
opolskie
5
podlaskie
1
pomorskie
4
śląskie
33
świętokrzyskie
2
warmińsko-mazurskie
2
wielkopolskie
4717
zachodniopomorskie
10
dolnośląskie
835
kujawsko-pomorskie
21
lubelskie
3
lubuskie
424
łódzkie
25
małopolskie
1
mazowieckie
6
opolskie
2
podkarpackie
1
pomorskie
8
śląskie
19
świętokrzyskie
4
warmińsko-mazurskie
4
wielkopolskie
5354
zachodniopomorskie
8
17. Dodaj do powyższego wyniku rekord pokazujący podsumowanie liczby studentów wg
województw.
RODZAJ_STUDIOW
PLEC
------------------------------ --------Niestacjonarne licencjackie
Niestacjonarne zawodowe
Stacjonarne licencjackie
Stacjonarne zawodowe
kobieta
kobieta
kobieta
...
mężczyzna
mężczyzna
WOJEWODZTWO
LICZBA_STUD
-------------------- ----------3969
1752
4831
2062
dolnośląskie
664
kujawsko-pomorskie
15
lubelskie
1
wielkopolskie
zachodniopomorskie
dolnośląskie
kujawsko-pomorskie
lubelskie
lubuskie
łódzkie
małopolskie
mazowieckie
opolskie
podkarpackie
podlaskie
pomorskie
śląskie
świętokrzyskie
warmińsko-mazurskie
wielkopolskie
zachodniopomorskie
5354
8
1499
36
4
838
47
3
13
7
1
1
12
52
6
6
10071
18
50 wierszy zostało wybranych.
18. Uzupełnij powyższy wynik o rekord pokazujący całkowitą liczbę studentów.
RODZAJ_STUDIOW
PLEC
------------------------------ --------Niestacjonarne licencjackie
Niestacjonarne zawodowe
Stacjonarne licencjackie
Stacjonarne zawodowe
kobieta
...
mężczyzna
mężczyzna
mężczyzna
mężczyzna
WOJEWODZTWO
LICZBA_STUD
-------------------- ----------3969
1752
4831
2062
dolnośląskie
664
świętokrzyskie
warmińsko-mazurskie
wielkopolskie
zachodniopomorskie
dolnośląskie
kujawsko-pomorskie
4
4
5354
8
1499
36
...
wielkopolskie
zachodniopomorskie
51 wierszy zostało wybranych.
10071
18
12614
Cwiczenie 3. Transformacja danych
wierszowych do układu kolumnowego
W niniejszym ćwiczeniu zapoznamy się z działaniem konstrukcji PIVOT i UNPIVOT.
1. Zbuduj ponownie zapytanie, które pokaże, ilu studentów z podziałem na płcie pochodzi z
poszczególnych województw (połącz tabele STUDENCI i MIASTA, zastosuj zwykłe
grupowanie).
WOJEWODZTWO
-------------------dolnośląskie
dolnośląskie
kujawsko-pomorskie
kujawsko-pomorskie
lubelskie
lubelskie
lubuskie
lubuskie
łódzkie
łódzkie
małopolskie
małopolskie
mazowieckie
mazowieckie
opolskie
opolskie
podkarpackie
podlaskie
pomorskie
pomorskie
śląskie
śląskie
świętokrzyskie
świętokrzyskie
warmińsko-mazurskie
warmińsko-mazurskie
wielkopolskie
wielkopolskie
zachodniopomorskie
zachodniopomorskie
PLEC
STUDENTOW
--------- ---------kobieta
664
mężczyzna
835
kobieta
15
mężczyzna
21
kobieta
1
mężczyzna
3
kobieta
414
mężczyzna
424
kobieta
22
mężczyzna
25
kobieta
2
mężczyzna
1
kobieta
7
mężczyzna
6
kobieta
5
mężczyzna
2
mężczyzna
1
kobieta
1
kobieta
4
mężczyzna
8
kobieta
33
mężczyzna
19
kobieta
2
mężczyzna
4
kobieta
2
mężczyzna
4
kobieta
4717
mężczyzna
5354
kobieta
10
mężczyzna
8
30 wierszy zostało wybranych.
2. Przekształć powyższy wynik w taki sposób, aby wyliczenia liczby studentów w poszczególnych
miastach pojawiły się w dwóch kolumnach: jednej dla kobiet, drugiej dla mężczyzn (użyj
klauzuli PIVOT).
WOJEWODZTWO
KOBIETY MĘŻCZYŹNI
-------------------- ---------- ---------dolnośląskie
664
835
kujawsko-pomorskie
15
21
lubelskie
1
3
lubuskie
414
424
łódzkie
22
25
małopolskie
2
1
mazowieckie
7
6
opolskie
5
2
podkarpackie
0
1
podlaskie
1
0
pomorskie
4
8
śląskie
33
19
świętokrzyskie
2
4
warmińsko-mazurskie
2
4
wielkopolskie
4717
5354
zachodniopomorskie
10
8
16 wierszy zostało wybranych.
3. Zbuduj zapytanie, które tym razem pokaże w kolejnych kolumnach, osobno dla kobiet i
mężczyzn, średnie ocen uzyskane przez studentów studiujących na poszczególnych
kierunkach.
NAZWA
----------------------------------------------------Edukacja artystyczna (stacjonarne)
Ekonomia (niestacjonarne)
Ekonomia (stacjonarne)
Elektrotechnika (niestacjonarne)
Elektrotechnika (stacjonarne)
Mechanika i budowa maszyn (niestacjonarne)
Mechanika i budowa maszyn (stacjonarne)
Pedagogika (niestacjonarne)
Pedagogika (stacjonarne)
Rolnictwo (niestacjonarne)
Rolnictwo (stacjonarne)
Turystyka i rekreacja (niestacjonarne)
Turystyka i rekreacja (stacjonarne)
Wychowanie fizyczne (niestacjonarne)
Wychowanie fizyczne (stacjonarne)
Wychowanie fizyczne z edukacją zdrowotną (niestacj.)
16 wierszy zostało wybranych.
KOBIETY
MĘŻCZYŹNI
----------- ----------4.445957744 4.163516746
3.799152805 3.504716981
4.016284726 3.789754747
3.342261905 3.390331945
3.587494274 3.459372679
3.741071429 3.333156548
3.665413534 3.624449788
4.118371003 3.902774944
4.332478849 4.049184594
3.675432643 3.294193967
3.702042067 3.54335086
3.816392752 3.57127557
4.082119777 3.690390173
3.655733362 3.439785264
3.8018696 3.519458491
3.871533923 3.726317348
4. Przekształć zapytanie z punktu 3. w taki sposób, aby średnie ocen były prezentowane z
dokładnością do dwóch miejsc po przecinku.
NAZWA
KOBIETY MĘŻCZYŹNI
----------------------------------------------------- ---------- ---------Edukacja artystyczna (stacjonarne)
4.45
4.16
Ekonomia (niestacjonarne)
3.8
3.5
Ekonomia (stacjonarne)
4.02
3.79
Elektrotechnika (niestacjonarne)
3.34
3.39
Elektrotechnika (stacjonarne)
3.59
3.46
Mechanika i budowa maszyn (niestacjonarne)
3.74
3.33
Mechanika i budowa maszyn (stacjonarne)
3.67
3.62
Pedagogika (niestacjonarne)
4.12
3.9
Pedagogika (stacjonarne)
4.33
4.05
Rolnictwo (niestacjonarne)
3.68
3.29
Rolnictwo (stacjonarne)
3.7
3.54
Turystyka i rekreacja (niestacjonarne)
3.82
3.57
Turystyka i rekreacja (stacjonarne)
4.08
3.69
Wychowanie fizyczne (niestacjonarne)
3.66
3.44
Wychowanie fizyczne (stacjonarne)
3.8
3.52
Wychowanie fizyczne z edukacją zdrowotną (niestacjonarne)
3.87
3.73
16 wierszy zostało wybranych.
5. Z zapytania z punktu 4. utwórz perspektywę o nazwie SREDNIE_PIVOT. Sprawdź, jakie dane
udostępnia perspektywa.
create view SREDNIE_PIVOT
as select ...
Perspektywa została utworzona.
select * from SREDNIE_PIVOT;
...
6. Zbuduj zapytanie z klauzulą UNPIVOT, które przekształci dane perspektywy SREDNIE_PIVOT
do układu wierszowego.
NAZWA
------------------------------------------------Edukacja artystyczna (stacjonarne)
Edukacja artystyczna (stacjonarne)
Ekonomia (niestacjonarne)
Ekonomia (niestacjonarne)
Ekonomia (stacjonarne)
Ekonomia (stacjonarne)
Elektrotechnika (niestacjonarne)
Elektrotechnika (niestacjonarne)
Elektrotechnika (stacjonarne)
Elektrotechnika (stacjonarne)
Mechanika i budowa maszyn (niestacjonarne)
Mechanika i budowa maszyn (niestacjonarne)
Mechanika i budowa maszyn (stacjonarne)
Mechanika i budowa maszyn (stacjonarne)
Pedagogika (niestacjonarne)
Pedagogika (niestacjonarne)
Pedagogika (stacjonarne)
Pedagogika (stacjonarne)
Rolnictwo (niestacjonarne)
Rolnictwo (niestacjonarne)
Rolnictwo (stacjonarne)
Rolnictwo (stacjonarne)
Turystyka i rekreacja (niestacjonarne)
Turystyka i rekreacja (niestacjonarne)
Turystyka i rekreacja (stacjonarne)
Turystyka i rekreacja (stacjonarne)
Wychowanie fizyczne (niestacjonarne)
Wychowanie fizyczne (niestacjonarne)
Wychowanie fizyczne (stacjonarne)
Wychowanie fizyczne (stacjonarne)
Wychowanie fizyczne z edukacją zdrowotną (niest.)
Wychowanie fizyczne z edukacją zdrowotną (niest.)
32 wierszy zostało wybranych.
PLEC
LICZBA_STUDENTOW
--------- ---------------kobieta
4.45
mężczyzna
4.16
kobieta
3.8
mężczyzna
3.5
kobieta
4.02
mężczyzna
3.79
kobieta
3.34
mężczyzna
3.39
kobieta
3.59
mężczyzna
3.46
kobieta
3.74
mężczyzna
3.33
kobieta
3.67
mężczyzna
3.62
kobieta
4.12
mężczyzna
3.9
kobieta
4.33
mężczyzna
4.05
kobieta
3.68
mężczyzna
3.29
kobieta
3.7
mężczyzna
3.54
kobieta
3.82
mężczyzna
3.57
kobieta
4.08
mężczyzna
3.69
kobieta
3.66
mężczyzna
3.44
kobieta
3.8
mężczyzna
3.52
kobieta
3.87
mężczyzna
3.73