-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpackage_statystyka.sql
224 lines (190 loc) · 7.04 KB
/
package_statystyka.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
CREATE OR REPLACE PACKAGE statystyka IS
--funkcje
--OGOLNE
--ogolna liczba rozegranych gier w dany tytul
FUNCTION IleRozgrywekGra(fTytul VARCHAR2)
RETURN NATURAL;
--ogolna liczba rozegranych gier gracza
FUNCTION IleRozgrywekGracz(fImie VARCHAR2, fNazwisko VARCHAR2)
RETURN NATURAL;
--ogolna liczba rozegranych gier klubu
FUNCTION IleRozgrywekKlub(fNazwa VARCHAR2)
RETURN NATURAL;
--GRACZ
--liczba wygranych gracza
FUNCTION IleWygranychGracz(fImie VARCHAR2, fNazwisko VARCHAR2)
RETURN NATURAL;
--liczba wygranych gracza w dany tytul
FUNCTION IleWygranychGraczGra(fImie VARCHAR2, fNazwisko VARCHAR2, fTytul VARCHAR2)
RETURN NATURAL;
--procent wygranych gracza
FUNCTION GraczProcentWygranych(fImie VARCHAR2, fNazwisko VARCHAR2)
RETURN NUMBER;
--KLUB
--liczba wygranych klubu
FUNCTION IleWygranychKlub(fNazwa VARCHAR2)
RETURN NATURAL;
--liczba wygranych klubu w dany tytul
FUNCTION IleWygranychKlubGra(fNazwa VARCHAR2, fTytul VARCHAR2)
RETURN NATURAL;
--procent wygranych klubu
FUNCTION KlubProcentWygranych(fNazwa VARCHAR2)
RETURN NUMBER;
--GRA
--procent wygranych dla gracza
FUNCTION GraProcentGracza(fTytul VARCHAR2, fImie VARCHAR2, fNazwisko VARCHAR2)
RETURN NUMBER;
--liczba rozgrywek w danej lokalizacji
FUNCTION IleGierLokalizacja(fTytul VARCHAR2, fMiasto VARCHAR2, fObiekt VARCHAR2)
RETURN NATURAL;
--procent rozgrywek w danej lokalizacji
FUNCTION GraProcentLokalizacji(fTytul VARCHAR2, fMiasto VARCHAR2, fObiekt VARCHAR2)
RETURN NUMBER;
--liczba gier turniejowych
FUNCTION IleGierTurniejowych(fTytul VARCHAR2)
RETURN NATURAL;
--exceptions
exGraczNieIstnieje EXCEPTION;
exKlubNieIstnieje EXCEPTION;
exGraNieIstnieje EXCEPTION;
--wizania exceptions
PRAGMA EXCEPTION_INIT(exGraczNieIstnieje, -20001);
PRAGMA EXCEPTION_INIT(exKlubNieIstnieje, -20002);
PRAGMA EXCEPTION_INIT(exGraNieIstnieje, -200003);
END statystyka;
/
COMMIT;
/
CREATE OR REPLACE PACKAGE BODY statystyka IS
FUNCTION IleRozgrywekGra(fTytul VARCHAR2)
RETURN NATURAL IS
vIleRozgrywek NATURAL;
vIleTurniejowych NATURAL;
vOgolem NATURAL;
BEGIN
SELECT COUNT(*) INTO vIleRozgrywek
FROM rozgrywki
WHERE gry_tytul = fTytul;
SELECT COUNT(*) INTO vIleTurniejowych
FROM rozgrywki_turniejowe
WHERE gry_tytul = fTytul;
vOgolem := vIleTurniejowych + vIleRozgrywek;
RETURN vOgolem;
END IleRozgrywekGra;
FUNCTION IleRozgrywekGracz(fImie VARCHAR2, fNazwisko VARCHAR2)
RETURN NATURAL IS
vIleRozgrywek NATURAL;
vIleTurniejowych NATURAL;
vOgolem NATURAL;
BEGIN
SELECT COUNT(*) INTO vIleRozgrywek
FROM rozgrywki
WHERE (gracze_imie = fImie AND gracze_nazwisko = fNazwisko) OR (gracze_imie1 = fImie AND gracze_nazwisko1 = fNazwisko);
SELECT COUNT(*) INTO vIleTurniejowych
FROM rozgrywka_gracze_role
WHERE imie_gracza = fImie AND nazwisko_gracza = fNazwisko;
vOgolem := vIleTurniejowych + vIleRozgrywek;
RETURN vOgolem;
END IleRozgrywekGracz;
FUNCTION IleRozgrywekKlub(fNazwa VARCHAR2)
RETURN NATURAL IS
vIleRozgrywek NATURAL;
BEGIN
SELECT COUNT(*) INTO vIleRozgrywek
FROM rozgrywki_turniejowe
WHERE (kluby_nazwa = fNazwa) OR (kluby_nazwa1 = fNazwa);
RETURN vIleRozgrywek;
END IleRozgrywekKlub;
FUNCTION IleWygranychGracz(fImie VARCHAR2, fNazwisko VARCHAR2)
RETURN NATURAL IS
vIleWygranych NATURAL;
BEGIN
SELECT COUNT(*) INTO vIleWygranych
FROM rozgrywki
WHERE wygrywajacy_gracz = (fImie || ' ' || fNazwisko);
RETURN vIleWygranych;
END IleWygranychGracz;
FUNCTION IleWygranychGraczGra(fImie VARCHAR2, fNazwisko VARCHAR2, fTytul VARCHAR2)
RETURN NATURAL IS
vIleWygranych NATURAL;
BEGIN
SELECT COUNT(*) INTO vIleWygranych
FROM rozgrywki
WHERE wygrywajacy_gracz = (fImie || ' ' || fNazwisko) AND gry_tytul = fTytul;
RETURN vIleWygranych;
END IleWygranychGraczGra;
FUNCTION GraczProcentWygranych(fImie VARCHAR2, fNazwisko VARCHAR2)
RETURN NUMBER IS
vResult NUMBER(5,2);
BEGIN
vResult := IleWygranychGracz(fImie, fNazwisko) / IleRozgrywekGracz(fImie, fNazwisko);
RETURN vResult;
END GraczProcentWygranych;
FUNCTION IleWygranychKlub(fNazwa VARCHAR2)
RETURN NATURAL IS
vIleWygranych NATURAL;
BEGIN
SELECT COUNT(*) INTO vIleWygranych
FROM rozgrywki_turniejowe
WHERE wygrywajacy_klub = fNazwa;
RETURN vIleWygranych;
END IleWygranychKlub;
FUNCTION IleWygranychKlubGra(fNazwa VARCHAR2, fTytul VARCHAR2)
RETURN NATURAL IS
vIleWygranych NATURAL;
BEGIN
SELECT COUNT(*) INTO vIleWygranych
FROM rozgrywki_turniejowe
WHERE wygrywajacy_klub = fNazwa AND gry_tytul = fTytul;
RETURN vIleWygranych;
END IleWygranychKlubGra;
FUNCTION KlubProcentWygranych(fNazwa VARCHAR2)
RETURN NUMBER IS
vResult NUMBER(5,2);
BEGIN
vResult := IleWygranychKlub(fNazwa) / IleRozgrywekKlub(fNazwa) * 100;
RETURN vResult;
END KlubProcentWygranych;
FUNCTION GraProcentGracza(fTytul VARCHAR2, fImie VARCHAR2, fNazwisko VARCHAR2)
RETURN NUMBER IS
vWynik NUMBER(5,2);
BEGIN
vWynik := IleWygranychGraczGra(fImie, fNazwisko, fTytul) / IleRozgrywekGra(fTytul) * 100;
END GraProcentGracza;
FUNCTION IleGierLokalizacja(fTytul VARCHAR2, fMiasto VARCHAR2, fObiekt VARCHAR2)
RETURN NATURAL IS
vIleGier NATURAL;
vIleTurniejowych NATURAL;
vIle NATURAL;
BEGIN
SELECT COUNT(*) INTO vIleGier
FROM rozgrywki
WHERE lokalizacje_miasto = fMiasto AND lokalizacje_obiekt = fObiekt;
SELECT COUNT(*) INTO vIleTurniejowych
FROM rozgrywki_turniejowe r INNER JOIN turnieje t ON r.turnieje_nazwa = t.nazwa
WHERE t.lokalizacje_miasto= fMiasto AND t.lokalizacje_obiekt = fObiekt;
vIle := vIleGier + vIleTurniejowych;
return vIle;
END IleGierLokalizacja;
FUNCTION GraProcentLokalizacji(fTytul VARCHAR2, fMiasto VARCHAR2, fObiekt VARCHAR2)
RETURN NUMBER IS
vIle NUMBER(5,2);
BEGIN
vIle := IleRozgrywekGra(fTytul) / IleGierLokalizacja(fTytul, fMiasto, fObiekt) * 100;
return vIle;
END GraProcentLokalizacji;
FUNCTION IleGierTurniejowych(fTytul VARCHAR2)
RETURN NATURAL IS
vIle NATURAL;
BEGIN
SELECT COUNT(*) INTO vIle
FROM rozgrywki_turniejowe
WHERE gry_tytul = fTytul;
return vIle;
END IleGierTurniejowych;
END statystyka;
/
COMMIT;
--TYPE tDane IS RECORD(
-- nazwisko pracownicy.nazwisko%TYPE,
-- etat pracownicy.etat%TYPE);