DatabaseCreation: views_.sql

File views_.sql, 20.3 KB (added by 231018, 4 days ago)
Line 
1CREATE OR REPLACE VIEW vw_neplateni_kazni_posledni_2_nedeli AS
2SELECT
3 k.kazna_id,
4 k.datum,
5 k.rok_na_plakanje,
6 k.iznos_za_plakanje,
7
8 p.prekrsok_id,
9 p.opis,
10
11 g.ime,
12 g.prezime,
13
14 v.registarska_oznaka,
15
16 CASE
17 WHEN k.kazna_id IS NULL THEN 'Nema kazna'
18 ELSE 'Postoi kazna'
19 END AS proverka_kazna,
20
21 CASE
22 WHEN k.datum IS NULL THEN 'Kaznata nema datum'
23 ELSE 'Kaznata ima datum'
24 END AS proverka_datum_kazna,
25
26 CASE
27 WHEN k.datum >= CURRENT_DATE - INTERVAL '14 days' THEN 'Kaznata e vo posledni 2 nedeli'
28 ELSE 'Kaznata ne e vo posledni 2 nedeli'
29 END AS proverka_period_kazna,
30
31 CASE
32 WHEN k.rok_na_plakanje IS NULL THEN 'Kaznata nema rok za plakanje'
33 WHEN k.rok_na_plakanje < CURRENT_DATE THEN 'Rokot za plakanje e istecen'
34 WHEN k.rok_na_plakanje = CURRENT_DATE THEN 'Rokot za plakanje istekuva denes'
35 ELSE 'Rokot za plakanje ne e istecen'
36 END AS proverka_rok_na_plakanje,
37
38 CASE
39 WHEN k.iznos_za_plakanje IS NULL THEN 'Nema iznos za plakanje'
40 WHEN k.iznos_za_plakanje <= 0 THEN 'Nevaliden iznos za plakanje'
41 ELSE 'Ima validen iznos za plakanje'
42 END AS proverka_iznos_za_plakanje,
43
44 CASE
45 WHEN p.prekrsok_id IS NULL THEN 'Kaznata nema povrzan prekrsok'
46 ELSE 'Kaznata ima povrzan prekrsok'
47 END AS proverka_prekrsok,
48
49 CASE
50 WHEN p.opis IS NULL OR TRIM(p.opis) = '' THEN 'Nema opis za prekrsokot'
51 ELSE 'Ima opis za prekrsokot'
52 END AS proverka_opis_prekrsok,
53
54 CASE
55 WHEN ps.storitel_embg IS NULL THEN 'Prekrsokot nema povrzan storitel'
56 ELSE 'Prekrsokot ima povrzan storitel'
57 END AS proverka_storitel,
58
59 CASE
60 WHEN g.embg IS NULL THEN 'Nema podatoci za gragjaninot'
61 ELSE 'Ima podatoci za gragjaninot'
62 END AS proverka_gragjanin,
63
64 CASE
65 WHEN g.ime IS NULL OR TRIM(g.ime) = '' THEN 'Nedostasuva ime na gragjaninot'
66 ELSE 'Ima ime na gragjaninot'
67 END AS proverka_ime_gragjanin,
68
69 CASE
70 WHEN g.prezime IS NULL OR TRIM(g.prezime) = '' THEN 'Nedostasuva prezime na gragjaninot'
71 ELSE 'Ima prezime na gragjaninot'
72 END AS proverka_prezime_gragjanin,
73
74 CASE
75 WHEN pv.vozilo_id IS NULL THEN 'Prekrsokot nema povrzano vozilo'
76 ELSE 'Prekrsokot ima povrzano vozilo'
77 END AS proverka_prekrsok_vozilo,
78
79 CASE
80 WHEN v.vozilo_id IS NULL THEN 'Nema podatoci za voziloto'
81 ELSE 'Ima podatoci za voziloto'
82 END AS proverka_vozilo,
83
84 CASE
85 WHEN v.registarska_oznaka IS NULL OR TRIM(v.registarska_oznaka) = '' THEN 'Nema registarska oznaka'
86 ELSE 'Ima registarska oznaka'
87 END AS proverka_registarska_oznaka,
88
89 CASE
90 WHEN pl.kazna_id IS NULL THEN 'Kaznata ne e platena'
91 ELSE 'Kaznata e platena'
92 END AS proverka_plakanje
93
94FROM Kazna k
95 JOIN Prekrsok p ON p.kazna_id = k.kazna_id
96 LEFT JOIN Prekrsok_Storitel ps ON p.prekrsok_id = ps.prekrsok_id
97 LEFT JOIN Gragjanin g ON ps.storitel_embg = g.embg
98 LEFT JOIN Prekrsok_Vozilo pv ON p.prekrsok_id = pv.prekrsok_id
99 LEFT JOIN Vozilo v ON pv.vozilo_id = v.vozilo_id
100 LEFT JOIN Plakanje pl ON pl.kazna_id = k.kazna_id
101WHERE k.datum >= CURRENT_DATE - INTERVAL '14 days'
102 AND pl.kazna_id IS NULL;
103
104
105
106CREATE OR REPLACE VIEW vw_prekrsoci_denes AS
107SELECT
108 p.prekrsok_id,
109 p.datum,
110 p.vreme,
111 p.opis,
112
113 z.ime AS zona,
114 z.dozvolena_brzina,
115
116 v.registarska_oznaka,
117
118 g.ime AS ime_gragjanin,
119 g.prezime AS prezime_gragjanin,
120
121 CASE
122 WHEN p.prekrsok_id IS NULL THEN 'Nema prekrsok'
123 ELSE 'Postoi prekrsok'
124 END AS proverka_prekrsok,
125
126 CASE
127 WHEN p.opis IS NULL OR TRIM(p.opis) = '' THEN 'Nema opis za prekrsokot'
128 ELSE 'Ima opis za prekrsokot'
129 END AS proverka_opis,
130
131 CASE
132 WHEN p.datum IS NULL THEN 'Nema datum za prekrsokot'
133 ELSE 'Ima datum za prekrsokot'
134 END AS proverka_datum,
135
136 CASE
137 WHEN p.vreme IS NULL THEN 'Nema vreme za prekrsokot'
138 ELSE 'Ima vreme za prekrsokot'
139 END AS proverka_vreme,
140
141 CASE
142 WHEN k.kamera_id IS NULL THEN 'Prekrsokot nema povrzana kamera'
143 ELSE 'Prekrsokot ima povrzana kamera'
144 END AS proverka_kamera,
145
146 CASE
147 WHEN l.lokacija_id IS NULL THEN 'Kamerata ne lokacija'
148 ELSE 'Kamerata ima povrzana lokacija'
149 END AS proverka_lokacija,
150
151 CASE
152 WHEN z.zona_id IS NULL THEN 'Lokacijata nema ma povrzanapovrzana zona'
153 ELSE 'Lokacijata ima povrzana zona'
154 END AS proverka_zona,
155
156 CASE
157 WHEN z.dozvolena_brzina IS NULL THEN 'Nema podatok za dozvolena brzina'
158 ELSE 'Ima podatok za dozvolena brzina'
159 END AS proverka_dozvolena_brzina,
160
161 CASE
162 WHEN pv.vozilo_id IS NULL THEN 'Prekrsokot nema povrzano vozilo'
163 ELSE 'Prekrsokot ima povrzano vozilo'
164 END AS proverka_prekrsok_vozilo,
165
166 CASE
167 WHEN v.vozilo_id IS NULL THEN 'Nema podatoci za voziloto'
168 ELSE 'Ima podatoci za voziloto'
169 END AS proverka_vozilo,
170
171 CASE
172 WHEN v.registarska_oznaka IS NULL OR TRIM(v.registarska_oznaka) = '' THEN 'Nema registarska oznaka'
173 ELSE 'Ima registarska oznaka'
174 END AS proverka_registarska_oznaka,
175
176 CASE
177 WHEN ps.storitel_embg IS NULL THEN 'Prekrsokot nema povrzan storitel'
178 ELSE 'Prekrsokot ima povrzan storitel'
179 END AS proverka_prekrsok_storitel,
180
181 CASE
182 WHEN g.embg IS NULL THEN 'Nema podatoci za gragjaninot'
183 ELSE 'Ima podatoci za gragjaninot'
184 END AS proverka_gragjanin,
185
186 CASE
187 WHEN g.ime IS NULL OR g.prezime IS NULL THEN 'Nedostasuva ime ili prezime na gragjaninot'
188 ELSE 'Gragjaninot ima celosni podatoci'
189 END AS proverka_podatoci_gragjanin
190
191FROM Prekrsok p
192LEFT JOIN Kamera k ON p.kamera_id = k.kamera_id
193LEFT JOIN Lokacija l ON l.lokacija_id = k.lokacija_id
194LEFT JOIN Zona z ON z.zona_id = l.zona_id
195LEFT JOIN Prekrsok_Vozilo pv ON pv.prekrsok_id = p.prekrsok_id
196LEFT JOIN Vozilo v ON v.vozilo_id = pv.vozilo_id
197LEFT JOIN Prekrsok_Storitel ps ON ps.prekrsok_id = p.prekrsok_id
198LEFT JOIN Gragjanin g ON g.embg = ps.storitel_embg
199WHERE p.datum = (
200 SELECT MAX(datum)
201 FROM Prekrsok
202);
203
204
205CREATE OR REPLACE VIEW vw_sopstvenici_na_vozila AS
206SELECT
207 v.vozilo_id,
208 v.registarska_oznaka,
209 v.marka,
210 v.model,
211
212 g.ime,
213 g.prezime,
214 g.telefonski_broj,
215
216 CASE
217 WHEN v.vozilo_id IS NULL THEN 'Nema vozilo'
218 ELSE 'Postoi vozilo'
219 END AS proverka_vozilo,
220
221 CASE
222 WHEN v.registarska_oznaka IS NULL OR TRIM(v.registarska_oznaka) = '' THEN 'Nema registarska oznaka'
223 ELSE 'Ima registarska oznaka'
224 END AS proverka_registarska_oznaka,
225
226 CASE
227 WHEN v.marka IS NULL OR TRIM(v.marka) = '' THEN 'Nema marka na vozilo'
228 ELSE 'Ima marka na vozilo'
229 END AS proverka_marka,
230
231 CASE
232 WHEN v.model IS NULL OR TRIM(v.model) = '' THEN 'Nema model na vozilo'
233 ELSE 'Ima model na vozilo'
234 END AS proverka_model,
235
236 CASE
237 WHEN sv.vozilo_id IS NULL THEN 'Voziloto nema sopstvenik'
238 ELSE 'Voziloto ima sopstvenik'
239 END AS proverka_sopstvenost,
240
241 CASE
242 WHEN sv.embg IS NULL OR TRIM(sv.embg) = '' THEN 'Nema EMBG za sopstvenik'
243 ELSE 'Ima EMBG za sopstvenik'
244 END AS proverka_embg_sopstvenik,
245
246 CASE
247 WHEN g.embg IS NULL THEN 'Nema podatoci za gragjaninot'
248 ELSE 'Ima podatoci za gragjaninot'
249 END AS proverka_gragjanin,
250
251 CASE
252 WHEN g.ime IS NULL OR TRIM(g.ime) = '' THEN 'Nedostasuva ime na sopstvenikot'
253 ELSE 'Ima ime na sopstvenikot'
254 END AS proverka_ime_sopstvenik,
255
256 CASE
257 WHEN g.prezime IS NULL OR TRIM(g.prezime) = '' THEN 'Nedostasuva prezime na sopstvenikot'
258 ELSE 'Ima prezime na sopstvenikot'
259 END AS proverka_prezime_sopstvenik,
260
261 CASE
262 WHEN g.telefonski_broj IS NULL OR TRIM(g.telefonski_broj) = '' THEN 'Nema telefonski broj'
263 ELSE 'Ima telefonski broj'
264 END AS proverka_telefon,
265
266 CASE
267 WHEN v.registarska_oznaka IS NOT NULL
268 AND v.marka IS NOT NULL
269 AND v.model IS NOT NULL
270 AND g.ime IS NOT NULL
271 AND g.prezime IS NOT NULL
272 THEN 'Zapisot e kompleten'
273 ELSE 'Zapisot ne e kompleten'
274 END AS proverka_celosen_zapis
275
276FROM Vozilo v
277 JOIN Sopstvenik_Vozilo sv ON v.vozilo_id = sv.vozilo_id
278 JOIN Gragjanin g ON sv.embg = g.embg;
279
280CREATE OR REPLACE VIEW vw_aktivni_zhalbi AS
281SELECT
282 z.zalba_id,
283 z.datum_na_podnesuvanje,
284 z.sodrzina,
285
286 p.status AS status_prekrsok,
287
288 g.ime,
289 g.prezime,
290
291 CASE
292 WHEN z.zalba_id IS NULL THEN 'Nema zalba'
293 ELSE 'Postoi zalba'
294 END AS proverka_zalba,
295
296 CASE
297 WHEN z.datum_na_podnesuvanje IS NULL THEN 'Zalbata nema datum na podnesuvanje'
298 ELSE 'Zalbata ima datum na podnesuvanje'
299 END AS proverka_datum_podnesuvanje,
300
301 CASE
302 WHEN z.datum_na_podnesuvanje > CURRENT_DATE THEN 'Datumot na zalbata e vo idnina'
303 WHEN z.datum_na_podnesuvanje = CURRENT_DATE THEN 'Zalbata e podnesena denes'
304 WHEN z.datum_na_podnesuvanje < CURRENT_DATE THEN 'Zalbata e podnesena vo minatoto'
305 ELSE 'Nema datum za proverka'
306 END AS proverka_period_zalba,
307
308 CASE
309 WHEN z.sodrzina IS NULL OR TRIM(z.sodrzina) = '' THEN 'Zalbata nema sodrzina'
310 ELSE 'Zalbata ima sodrzina'
311 END AS proverka_sodrzina,
312
313 CASE
314 WHEN z.korisnik_id IS NULL THEN 'Zalbata nema povrzan korisnik'
315 ELSE 'Zalbata ima povrzan korisnik'
316 END AS proverka_korisnik_id,
317
318 CASE
319 WHEN k.korisnik_id IS NULL THEN 'Nema podatoci za korisnikot'
320 ELSE 'Ima podatoci za korisnikot'
321 END AS proverka_korisnik,
322
323 CASE
324 WHEN k.embg IS NULL OR TRIM(k.embg) = '' THEN 'Korisnikot nema EMBG'
325 ELSE 'Korisnikot ima EMBG'
326 END AS proverka_embg_korisnik,
327
328 CASE
329 WHEN g.embg IS NULL THEN 'Nema podatoci za gragjaninot'
330 ELSE 'Ima podatoci za gragjaninot'
331 END AS proverka_gragjanin,
332
333 CASE
334 WHEN g.ime IS NULL OR TRIM(g.ime) = '' THEN 'Nedostasuva ime na gragjaninot'
335 ELSE 'Ima ime na gragjaninot'
336 END AS proverka_ime_gragjanin,
337
338 CASE
339 WHEN g.prezime IS NULL OR TRIM(g.prezime) = '' THEN 'Nedostasuva prezime na gragjaninot'
340 ELSE 'Ima prezime na gragjaninot'
341 END AS proverka_prezime_gragjanin,
342
343 CASE
344 WHEN z.prekrsok_id IS NULL THEN 'Zalbata nema povrzan prekrsok'
345 ELSE 'Zalbata ima povrzan prekrsok'
346 END AS proverka_prekrsok_id,
347
348 CASE
349 WHEN p.prekrsok_id IS NULL THEN 'Nema podatoci za prekrsokot'
350 ELSE 'Ima podatoci za prekrsokot'
351 END AS proverka_prekrsok,
352
353 CASE
354 WHEN p.status IS NULL OR TRIM(p.status) = '' THEN 'Prekrsokot nema status'
355 ELSE 'Prekrsokot ima status'
356 END AS proverka_status_prekrsok,
357
358 CASE
359 WHEN LOWER(p.status) = 'aktiven' THEN 'Prekrsokot e aktiven'
360 WHEN LOWER(p.status) = 'zavrshen' THEN 'Prekrsokot e zavrshen'
361 WHEN LOWER(p.status) = 'otkazan' THEN 'Prekrsokot e otkazan'
362 WHEN p.status IS NULL OR TRIM(p.status) = '' THEN 'Nepoznat status na prekrsok'
363 ELSE 'Drug status na prekrsok'
364 END AS opis_status_prekrsok,
365
366 CASE
367 WHEN z.datum_na_podnesuvanje IS NOT NULL
368 AND z.sodrzina IS NOT NULL
369 AND TRIM(z.sodrzina) <> ''
370 AND k.korisnik_id IS NOT NULL
371 AND g.embg IS NOT NULL
372 AND p.prekrsok_id IS NOT NULL
373 THEN 'Zapisot za zalbata e kompleten'
374 ELSE 'Zapisot za zalbata ne e kompleten'
375 END AS proverka_celosen_zapis
376
377FROM Zalba z
378 LEFT JOIN Korisnik k ON z.korisnik_id = k.korisnik_id
379 LEFT JOIN Gragjanin g ON k.embg = g.embg
380 LEFT JOIN Prekrsok p ON z.prekrsok_id = p.prekrsok_id;
381
382CREATE VIEW vw_neaktivni_kameri AS
383SELECT k.kamera_id,
384 k.status,
385 k.seriski_broj,
386 l.ulica,
387 z.ime AS zona
388FROM Kamera k
389 LEFT JOIN Lokacija l ON k.lokacija_id = l.lokacija_id
390 LEFT JOIN Zona z ON l.zona_id = z.zona_id
391WHERE k.status IN ('neaktivna', 'servis');
392
393
394
395CREATE VIEW vw_prekrsoci_so_nadminata_brzina AS
396SELECT p.prekrsok_id,
397 p.detektirana_brzina,
398 z.dozvolena_brzina,
399 (p.detektirana_brzina - z.dozvolena_brzina) AS razlika,
400 z.ime AS zona
401FROM Prekrsok p
402 JOIN Kamera k ON p.kamera_id = k.kamera_id
403 JOIN Lokacija l ON k.lokacija_id = l.lokacija_id
404 JOIN Zona z ON l.zona_id = z.zona_id
405WHERE p.detektirana_brzina > z.dozvolena_brzina;
406
407
408CREATE OR REPLACE VIEW vw_istecheni_registracii AS
409SELECT
410 r.registracija_id,
411 r.broj,
412 r.mesto,
413 r.datum,
414 r.datum_istekuvanje,
415
416 v.vozilo_id,
417 v.registarska_oznaka,
418
419 s.embg,
420
421 CASE
422 WHEN r.registracija_id IS NULL THEN 'Nema registracija'
423 ELSE 'Postoi registracija'
424 END AS proverka_registracija,
425
426 CASE
427 WHEN r.broj IS NULL OR TRIM(r.broj) = '' THEN 'Nema broj na registracija'
428 ELSE 'Ima broj na registracija'
429 END AS proverka_broj_registracija,
430
431 CASE
432 WHEN r.mesto IS NULL OR TRIM(r.mesto) = '' THEN 'Nema mesto na registracija'
433 ELSE 'Ima mesto na registracija'
434 END AS proverka_mesto_registracija,
435
436 CASE
437 WHEN r.datum IS NULL THEN 'Nema datum na registracija'
438 ELSE 'Ima datum na registracija'
439 END AS proverka_datum_registracija,
440
441 CASE
442 WHEN r.datum_istekuvanje IS NULL THEN 'Nema datum na istekuvanje'
443 ELSE 'Ima datum na istekuvanje'
444 END AS proverka_datum_istekuvanje,
445
446 CASE
447 WHEN r.datum_istekuvanje < CURRENT_DATE THEN 'Registracijata e istecena'
448 WHEN r.datum_istekuvanje = CURRENT_DATE THEN 'Registracijata istekuva denes'
449 WHEN r.datum_istekuvanje > CURRENT_DATE THEN 'Registracijata e validna'
450 ELSE 'Nema podatok za proverka na registracija'
451 END AS proverka_status_registracija,
452
453 CASE
454 WHEN r.datum IS NOT NULL
455 AND r.datum_istekuvanje IS NOT NULL
456 AND r.datum_istekuvanje < r.datum
457 THEN 'Datumot na istekuvanje e pred datumot na registracija'
458 WHEN r.datum IS NOT NULL
459 AND r.datum_istekuvanje IS NOT NULL
460 AND r.datum_istekuvanje >= r.datum
461 THEN 'Datumite na registracijata se validni'
462 ELSE 'Nema dovolno podatoci za proverka na datumi'
463 END AS proverka_validnost_datumi,
464
465 CASE
466 WHEN v.vozilo_id IS NULL THEN 'Registracijata nema povrzano vozilo'
467 ELSE 'Registracijata ima povrzano vozilo'
468 END AS proverka_vozilo,
469
470 CASE
471 WHEN v.registarska_oznaka IS NULL OR TRIM(v.registarska_oznaka) = '' THEN 'Nema registarska oznaka'
472 ELSE 'Ima registarska oznaka'
473 END AS proverka_registarska_oznaka,
474
475 CASE
476 WHEN s.embg IS NULL OR TRIM(s.embg) = '' THEN 'Registracijata nema povrzan sopstvenik'
477 ELSE 'Registracijata ima povrzan sopstvenik'
478 END AS proverka_sopstvenik,
479
480 CASE
481 WHEN r.broj IS NOT NULL
482 AND TRIM(r.broj) <> ''
483 AND r.mesto IS NOT NULL
484 AND TRIM(r.mesto) <> ''
485 AND r.datum IS NOT NULL
486 AND r.datum_istekuvanje IS NOT NULL
487 AND v.vozilo_id IS NOT NULL
488 AND v.registarska_oznaka IS NOT NULL
489 AND TRIM(v.registarska_oznaka) <> ''
490 AND s.embg IS NOT NULL
491 THEN 'Zapisot za registracija e kompleten'
492 ELSE 'Zapisot za registracija ne e kompleten'
493 END AS proverka_celosen_zapis
494
495FROM Registracija r
496 JOIN Vozilo v ON r.Vozilovozilo_id = v.vozilo_id
497 JOIN Sopstvenik s ON r.sopstvenikEmbg = s.embg
498WHERE r.datum_istekuvanje < CURRENT_DATE;
499
500
501CREATE OR REPLACE VIEW vw_lokacii_so_najmnogu_prekrsoci AS
502SELECT
503 l.lokacija_id,
504 l.ulica,
505 z.ime AS zona,
506 COUNT(p.prekrsok_id) AS broj_prekrsoci,
507
508 CASE
509 WHEN l.lokacija_id IS NULL THEN 'Nema lokacija'
510 ELSE 'Postoi lokacija'
511 END AS proverka_lokacija,
512
513 CASE
514 WHEN l.ulica IS NULL OR TRIM(l.ulica) = '' THEN 'Nema podatok za ulica'
515 ELSE 'Ima podatok za ulica'
516 END AS proverka_ulica,
517
518 CASE
519 WHEN z.ime IS NULL OR TRIM(z.ime) = '' THEN 'Lokacijata nema povrzana zona'
520 ELSE 'Lokacijata ima povrzana zona'
521 END AS proverka_zona,
522
523 CASE
524 WHEN COUNT(k.kamera_id) = 0 THEN 'Lokacijata nema kameri'
525 ELSE 'Lokacijata ima kameri'
526 END AS proverka_kameri,
527
528 CASE
529 WHEN COUNT(p.prekrsok_id) = 0 THEN 'Nema prekrsoci na ovaa lokacija'
530 WHEN COUNT(p.prekrsok_id) BETWEEN 1 AND 10 THEN 'Mal broj prekrsoci'
531 WHEN COUNT(p.prekrsok_id) BETWEEN 11 AND 50 THEN 'Sreden broj prekrsoci'
532 ELSE 'Golem broj prekrsoci'
533 END AS kategorija_broj_prekrsoci,
534
535 CASE
536 WHEN COUNT(p.prekrsok_id) = 0 THEN 'Lokacijata ne e kriticna'
537 WHEN COUNT(p.prekrsok_id) >= 50 THEN 'Lokacijata e kriticna'
538 ELSE 'Lokacijata treba da se sledi'
539 END AS proverka_rizik_lokacija,
540
541 CASE
542 WHEN l.ulica IS NOT NULL
543 AND TRIM(l.ulica) <> ''
544 AND z.ime IS NOT NULL
545 AND TRIM(z.ime) <> ''
546 THEN 'Zapisot za lokacijata e kompleten'
547 ELSE 'Zapisot za lokacijata ne e kompleten'
548 END AS proverka_celosen_zapis
549
550FROM Lokacija l
551LEFT JOIN Zona z
552 ON z.zona_id = l.zona_id
553LEFT JOIN Kamera k
554 ON k.lokacija_id = l.lokacija_id
555LEFT JOIN Prekrsok p
556 ON p.kamera_id = k.kamera_id
557GROUP BY
558 l.lokacija_id,
559 l.ulica,
560 z.ime;
561
562
563CREATE OR REPLACE VIEW vw_vozila_najmnogu_prekshoci AS
564SELECT
565 v.vozilo_id,
566 v.registarska_oznaka,
567
568 COUNT(pv.prekrsok_id) AS vkupno_prekshoci,
569
570 CASE
571 WHEN v.vozilo_id IS NULL THEN 'Nema vozilo'
572 ELSE 'Postoi vozilo'
573 END AS proverka_vozilo,
574
575 CASE
576 WHEN v.registarska_oznaka IS NULL OR TRIM(v.registarska_oznaka) = '' THEN 'Nema registarska oznaka'
577 ELSE 'Ima registarska oznaka'
578 END AS proverka_registarska_oznaka,
579
580 CASE
581 WHEN COUNT(pv.prekrsok_id) = 0 THEN 'Voziloto nema prekrsoci'
582 ELSE 'Voziloto ima prekrsoci'
583 END AS proverka_prekrsoci,
584
585 CASE
586 WHEN COUNT(pv.prekrsok_id) = 0 THEN 'Bez prekrsoci'
587 WHEN COUNT(pv.prekrsok_id) BETWEEN 1 AND 3 THEN 'Mal broj prekrsoci'
588 WHEN COUNT(pv.prekrsok_id) BETWEEN 4 AND 10 THEN 'Sreden broj prekrsoci'
589 ELSE 'Golem broj prekrsoci'
590 END AS kategorija_broj_prekrsoci,
591
592 CASE
593 WHEN COUNT(pv.prekrsok_id) = 0 THEN 'Voziloto ne e rizicno'
594 WHEN COUNT(pv.prekrsok_id) BETWEEN 1 AND 3 THEN 'Voziloto treba da se sledi'
595 WHEN COUNT(pv.prekrsok_id) BETWEEN 4 AND 10 THEN 'Voziloto e rizicno'
596 ELSE 'Voziloto e visokorizicno'
597 END AS proverka_rizik_vozilo,
598
599 CASE
600 WHEN v.registarska_oznaka IS NOT NULL
601 AND TRIM(v.registarska_oznaka) <> ''
602 THEN 'Zapisot za voziloto e kompleten'
603 ELSE 'Zapisot za voziloto ne e kompleten'
604 END AS proverka_celosen_zapis
605
606FROM Vozilo v
607 LEFT JOIN Prekrsok_Vozilo pv ON v.vozilo_id = pv.vozilo_id
608GROUP BY
609 v.vozilo_id,
610 v.registarska_oznaka;
611
612
613
614CREATE VIEW vw_povtoreni_prekshoci AS
615SELECT tk.ime AS tip_prekrsok,
616 v.registarska_oznaka,
617 COUNT(*) AS broj_povtoruvanja
618FROM Prekrsok p
619 JOIN TipPrekrsok tk ON p.tip_prekrsok_id = tk.tip_prekrsok_id
620 JOIN Prekrsok_Vozilo pv ON p.prekrsok_id = pv.prekrsok_id
621 JOIN Vozilo v ON pv.vozilo_id = v.vozilo_id
622GROUP BY tk.ime, v.registarska_oznaka
623HAVING COUNT(*) > 1;
624
625
626
627CREATE VIEW vw_kamera_tip_prekshok AS
628SELECT k.kamera_id,
629 k.seriski_broj,
630 tk.ime AS tip_prekrsok,
631 z.ime AS zona,
632 COUNT(p.prekrsok_id) AS broj_deteckii
633FROM Kamera k
634 LEFT JOIN Prekrsok p ON k.kamera_id = p.kamera_id
635 LEFT JOIN TipPrekrsok tk ON p.tip_prekrsok_id = tk.tip_prekrsok_id
636 LEFT JOIN Lokacija l ON k.lokacija_id = l.lokacija_id
637 LEFT JOIN Zona z ON l.zona_id = z.zona_id
638GROUP BY k.kamera_id, k.seriski_broj, tk.ime, z.ime;