| 1 |
|
|---|
| 2 | ---------------------VIEWS-------------------------------------------------------------------------------
|
|---|
| 3 |
|
|---|
| 4 |
|
|---|
| 5 | ---- Listanje na site zapisnici so osnovnite koloni
|
|---|
| 6 | CREATE OR REPLACE VIEW v_site_zapisnici AS
|
|---|
| 7 | SELECT
|
|---|
| 8 | id_na_zapisnik,
|
|---|
| 9 | datum,
|
|---|
| 10 | vreme,
|
|---|
| 11 | lokacija,
|
|---|
| 12 | Potpis,
|
|---|
| 13 | id_slucaj,
|
|---|
| 14 | EMBG_Prekrsuvach,
|
|---|
| 15 | Vozilo_Broj_Sasija,
|
|---|
| 16 | EMBG_Policaec
|
|---|
| 17 | FROM Zapisnik;
|
|---|
| 18 |
|
|---|
| 19 |
|
|---|
| 20 |
|
|---|
| 21 | -- Listanje na zapisnici so site detali: prekrsitel, vozilo, policaec,
|
|---|
| 22 | -- tip prekrsok, iznos na kazna i status na uplata.
|
|---|
| 23 |
|
|---|
| 24 | CREATE OR REPLACE VIEW v_zapisnici_detalno AS
|
|---|
| 25 | SELECT
|
|---|
| 26 | z.id_na_zapisnik,z.datum,z.vreme,z.lokacija,z.id_slucaj,
|
|---|
| 27 | g.EMBG AS embg_prekrsitel,g.ime AS prekrsitel_ime,g.prezime AS prekrsitel_prezime,
|
|---|
| 28 | v.broj_na_sasija, v.model AS vozilo_model,pol.EMBG_P AS embg_policaec,
|
|---|
| 29 | g_p.ime AS policaec_ime,g_p.prezime AS policaec_prezime,
|
|---|
| 30 | p.ime AS prekrsok,
|
|---|
| 31 | k.iznos_kazna,
|
|---|
| 32 | u.iznos AS iznos_uplata,u.status AS status_uplata
|
|---|
| 33 | FROM Zapisnik z
|
|---|
| 34 | LEFT JOIN Gragjanin g ON z.EMBG_Prekrsuvach = g.EMBG
|
|---|
| 35 | LEFT JOIN Vozilo v ON z.Vozilo_Broj_Sasija = v.broj_na_sasija
|
|---|
| 36 | LEFT JOIN Policaec pol ON z.EMBG_Policaec = pol.EMBG_P
|
|---|
| 37 | LEFT JOIN Gragjanin g_p ON pol.EMBG_P = g_p.EMBG
|
|---|
| 38 | LEFT JOIN Stavka_Zapisnik sz ON z.id_na_zapisnik = sz.id_na_zapisnik
|
|---|
| 39 | LEFT JOIN Prekrsok p ON sz.id_na_prekrsok = p.id_prekrsok
|
|---|
| 40 | LEFT JOIN Kazna k ON p.id_kazna = k.id_kazna
|
|---|
| 41 | LEFT JOIN Uplata u ON z.id_na_zapisnik = u.id_zapisnik;
|
|---|
| 42 |
|
|---|
| 43 |
|
|---|
| 44 |
|
|---|
| 45 | -- Site neplateni kazni so podatoci za prekrsitelot, prekrsokot, iznosot
|
|---|
| 46 | -- i kolku denovi se vekje neplateni.
|
|---|
| 47 |
|
|---|
| 48 | CREATE OR REPLACE VIEW v_neplateni_kazni AS
|
|---|
| 49 | SELECT
|
|---|
| 50 | z.id_na_zapisnik,z.datum AS datum_prekrsok,z.lokacija,
|
|---|
| 51 | g.EMBG AS embg_prekrsitel,g.ime AS ime_prekrsitel, g.prezime AS prezime_prekrsitel,
|
|---|
| 52 | p.ime AS prekrsok,
|
|---|
| 53 | k.iznos_kazna,
|
|---|
| 54 | u.iznos AS iznos_za_naplata,
|
|---|
| 55 | (CURRENT_DATE - z.datum) AS denovi_neplateno
|
|---|
| 56 | FROM Uplata u
|
|---|
| 57 | JOIN Zapisnik z ON u.id_zapisnik = z.id_na_zapisnik
|
|---|
| 58 | JOIN Gragjanin g ON z.EMBG_Prekrsuvach = g.EMBG
|
|---|
| 59 | JOIN Stavka_Zapisnik sz ON z.id_na_zapisnik = sz.id_na_zapisnik
|
|---|
| 60 | JOIN Prekrsok p ON sz.id_na_prekrsok = p.id_prekrsok
|
|---|
| 61 | JOIN Kazna k ON p.id_kazna = k.id_kazna
|
|---|
| 62 | WHERE u.status = 'Neplateno';
|
|---|
| 63 |
|
|---|
| 64 |
|
|---|
| 65 |
|
|---|
| 66 |
|
|---|
| 67 | -- Pokazuva koi gragjani povtoruvaat eden ist tip prekrsok (COUNT > 1).
|
|---|
| 68 | -- Vrakja kolku pati, prv i posleden pat, i vkupen iznos kazni za toj prekrsok.
|
|---|
| 69 | CREATE OR REPLACE VIEW v_povtoreni_prekrsoci AS
|
|---|
| 70 | WITH Prekrsoci_Stats AS (
|
|---|
| 71 | SELECT
|
|---|
| 72 | z.EMBG_Prekrsuvach,
|
|---|
| 73 | sz.id_na_prekrsok,
|
|---|
| 74 | COUNT(*) AS broj_povtori,
|
|---|
| 75 | MIN(z.datum) AS prv_pat,
|
|---|
| 76 | MAX(z.datum) AS posleden_pat,
|
|---|
| 77 | SUM(k.iznos_kazna) AS vkupen_iznos_kazni
|
|---|
| 78 | FROM Zapisnik z
|
|---|
| 79 | JOIN Stavka_Zapisnik sz ON z.id_na_zapisnik = sz.id_na_zapisnik
|
|---|
| 80 | JOIN Prekrsok p ON sz.id_na_prekrsok = p.id_prekrsok
|
|---|
| 81 | JOIN Kazna k ON p.id_kazna = k.id_kazna
|
|---|
| 82 | GROUP BY z.EMBG_Prekrsuvach, sz.id_na_prekrsok
|
|---|
| 83 | HAVING COUNT(*) > 1
|
|---|
| 84 | )
|
|---|
| 85 | SELECT
|
|---|
| 86 | g.EMBG,g.ime,g.prezime,
|
|---|
| 87 | p.id_prekrsok,p.ime AS prekrsok,
|
|---|
| 88 | ps.broj_povtori,ps.prv_pat,ps.posleden_pat,ps.vkupen_iznos_kazni
|
|---|
| 89 | FROM Prekrsoci_Stats ps
|
|---|
| 90 | JOIN Gragjanin g ON ps.EMBG_Prekrsuvach = g.EMBG
|
|---|
| 91 | JOIN Prekrsok p ON ps.id_na_prekrsok = p.id_prekrsok;
|
|---|
| 92 |
|
|---|
| 93 | select * from v_povtoreni_prekrsoci vpp
|
|---|
| 94 |
|
|---|
| 95 | -- Prosek na izdadeni zapisnici po policaec: vkupno zapisnici, prv i posleden,
|
|---|
| 96 | -- aktivni meseci i prosechen broj zapisnici po mesec aktivnost.
|
|---|
| 97 | CREATE OR REPLACE VIEW v_policajci_prosek_zapisnici AS
|
|---|
| 98 | WITH Policaec_Stats AS (
|
|---|
| 99 | SELECT
|
|---|
| 100 | EMBG_Policaec,
|
|---|
| 101 | COUNT(id_na_zapisnik) AS vkupno_zapisnici,
|
|---|
| 102 | MIN(datum) AS prv_zapisnik,
|
|---|
| 103 | MAX(datum) AS posleden_zapisnik
|
|---|
| 104 | FROM Zapisnik
|
|---|
| 105 | GROUP BY EMBG_Policaec
|
|---|
| 106 | )
|
|---|
| 107 | SELECT
|
|---|
| 108 | pol.EMBG_P,pol.broj_na_znacka,
|
|---|
| 109 | g.ime AS policaec_ime,g.prezime AS policaec_prezime,
|
|---|
| 110 | ps.vkupno_zapisnici,ps.prv_zapisnik,ps.posleden_zapisnik,
|
|---|
| 111 | GREATEST(DATE_PART('year', AGE(ps.posleden_zapisnik, ps.prv_zapisnik)) * 12 +
|
|---|
| 112 | DATE_PART('month', AGE(ps.posleden_zapisnik, ps.prv_zapisnik)), 1) AS aktivni_meseci,
|
|---|
| 113 | (ps.vkupno_zapisnici::numeric /
|
|---|
| 114 | GREATEST(DATE_PART('year', AGE(ps.posleden_zapisnik, ps.prv_zapisnik)) * 12 +
|
|---|
| 115 | DATE_PART('month', AGE(ps.posleden_zapisnik, ps.prv_zapisnik)),
|
|---|
| 116 | 1)::numeric) AS prosek_zapisnici_po_mesec
|
|---|
| 117 | FROM Policaec_Stats ps
|
|---|
| 118 | JOIN Policaec pol ON ps.EMBG_Policaec = pol.EMBG_P
|
|---|
| 119 | JOIN Gragjanin g ON pol.EMBG_P = g.EMBG;
|
|---|
| 120 |
|
|---|
| 121 |
|
|---|
| 122 | select *
|
|---|
| 123 | from v_policaici_prosek_zapisnici vppz
|
|---|
| 124 |
|
|---|
| 125 |
|
|---|
| 126 |
|
|---|
| 127 | -- Istorija/profil za sekoj gragjanin: vkupno prekrshoci, vkupno platenо,
|
|---|
| 128 | -- vkupen dolg, prv i posleden prekrshok, broj na razlichni tipovi prekrshoci.
|
|---|
| 129 | CREATE OR REPLACE VIEW v_istorija_gragjanin AS
|
|---|
| 130 | WITH Zapisnik_Stats AS (
|
|---|
| 131 | SELECT
|
|---|
| 132 | EMBG_Prekrsuvach,
|
|---|
| 133 | COUNT(DISTINCT z.id_na_zapisnik) AS vkupno_zapisnici,
|
|---|
| 134 | MIN(z.datum) AS prv_prekrsok,
|
|---|
| 135 | MAX(z.datum) AS posleden_prekrsok,
|
|---|
| 136 | COUNT(sz.id_stavka) AS vkupno_prekrshoci,
|
|---|
| 137 | COUNT(DISTINCT sz.id_na_prekrsok) AS razlichni_tipovi,
|
|---|
| 138 | COALESCE(SUM(k.iznos_kazna), 0) AS vkupen_iznos_kazni
|
|---|
| 139 | FROM Zapisnik z
|
|---|
| 140 | LEFT JOIN Stavka_Zapisnik sz ON z.id_na_zapisnik = sz.id_na_zapisnik
|
|---|
| 141 | LEFT JOIN Prekrsok p ON sz.id_na_prekrsok = p.id_prekrsok
|
|---|
| 142 | LEFT JOIN Kazna k ON p.id_kazna = k.id_kazna
|
|---|
| 143 | GROUP BY EMBG_Prekrsuvach
|
|---|
| 144 | ),
|
|---|
| 145 | Uplata_Stats AS (
|
|---|
| 146 | SELECT
|
|---|
| 147 | z.EMBG_Prekrsuvach,
|
|---|
| 148 | COALESCE(SUM(CASE WHEN u.status = 'Plateno' THEN u.iznos END), 0) AS vkupno_plateno,
|
|---|
| 149 | COALESCE(SUM(CASE WHEN u.status = 'Neplateno' THEN u.iznos END), 0) AS vkupen_dolg,
|
|---|
| 150 | COUNT(CASE WHEN u.status = 'Neplateno' THEN u.id_uplata END) AS broj_neplateni
|
|---|
| 151 | FROM Uplata u
|
|---|
| 152 | JOIN Zapisnik z ON u.id_zapisnik = z.id_na_zapisnik
|
|---|
| 153 | GROUP BY z.EMBG_Prekrsuvach
|
|---|
| 154 | )
|
|---|
| 155 | SELECT
|
|---|
| 156 | g.EMBG,g.ime,g.prezime,g.datum_ragjanje,
|
|---|
| 157 | zs.vkupno_zapisnici,zs.vkupno_prekrshoci,zs.razlichni_tipovi,zs.vkupen_iznos_kazni,
|
|---|
| 158 | COALESCE(us.vkupno_plateno, 0) AS vkupno_plateno,
|
|---|
| 159 | COALESCE(us.vkupen_dolg, 0) AS vkupen_dolg,
|
|---|
| 160 | COALESCE(us.broj_neplateni, 0) AS broj_neplateni,
|
|---|
| 161 | zs.prv_prekrsok,
|
|---|
| 162 | zs.posleden_prekrsok
|
|---|
| 163 | FROM Gragjanin g
|
|---|
| 164 | JOIN Zapisnik_Stats zs ON g.EMBG = zs.EMBG_Prekrsuvach
|
|---|
| 165 | LEFT JOIN Uplata_Stats us ON g.EMBG = us.EMBG_Prekrsuvach;
|
|---|
| 166 |
|
|---|
| 167 |
|
|---|
| 168 |
|
|---|
| 169 |
|
|---|
| 170 | select * from v_istorija_gragjanin vig
|
|---|
| 171 |
|
|---|
| 172 |
|
|---|
| 173 | ------------------------INDEKSI---------------------------------------------------
|
|---|
| 174 |
|
|---|
| 175 | --za v_site_zapisnici
|
|---|
| 176 |
|
|---|
| 177 | select *
|
|---|
| 178 | from v_site_zapisnici vsz
|
|---|
| 179 | where vsz.embg_prekrsuvach='1508004480145'
|
|---|
| 180 |
|
|---|
| 181 | --insert
|
|---|
| 182 |
|
|---|
| 183 | INSERT INTO Zapisnik
|
|---|
| 184 | (vreme, datum, lokacija, Potpis, id_slucaj, EMBG_Prekrsuvach, Vozilo_Broj_Sasija, EMBG_Policaec)
|
|---|
| 185 | VALUES
|
|---|
| 186 | ('16:40:00', '2025-07-11', 'Bulevar Partizanski Odredi', true, 1, '1508004480145', 'CB6BC94C191376CC6', '1101960480659');
|
|---|
| 187 | --update
|
|---|
| 188 | UPDATE Zapisnik
|
|---|
| 189 | SET
|
|---|
| 190 |
|
|---|
| 191 | Potpis = false,
|
|---|
| 192 | vreme = '17:15:00'
|
|---|
| 193 | WHERE id_na_zapisnik = 30000006;
|
|---|
| 194 |
|
|---|
| 195 | --posle indeks za v_site_zapisnici
|
|---|
| 196 |
|
|---|
| 197 | CREATE INDEX idx_zapisnik_prekrsuvach ON Zapisnik(EMBG_Prekrsuvach);
|
|---|
| 198 | --insert posle indeks
|
|---|
| 199 | INSERT INTO Zapisnik
|
|---|
| 200 | (vreme, datum, lokacija, Potpis, id_slucaj, EMBG_Prekrsuvach, Vozilo_Broj_Sasija, EMBG_Policaec)
|
|---|
| 201 | VALUES
|
|---|
| 202 | ('16:40:00', '2025-07-11', 'Bulevar Partizanski Odredi', true, 1, '1508004480145', 'CB6BC94C191376CC6', '1101960480659');
|
|---|
| 203 |
|
|---|
| 204 | --update posle indeks
|
|---|
| 205 | UPDATE Zapisnik
|
|---|
| 206 | SET
|
|---|
| 207 |
|
|---|
| 208 | Potpis = false,
|
|---|
| 209 | vreme = '18:15:00'
|
|---|
| 210 | WHERE id_na_zapisnik = 30000011;
|
|---|
| 211 |
|
|---|
| 212 | --za v_zapisnici_detalno
|
|---|
| 213 |
|
|---|
| 214 | SELECT * FROM v_zapisnici_detalno
|
|---|
| 215 | WHERE embg_prekrsitel = '0412992470302';
|
|---|
| 216 |
|
|---|
| 217 | --insert
|
|---|
| 218 |
|
|---|
| 219 | INSERT INTO Stavka_Zapisnik
|
|---|
| 220 | (reden_broj, id_na_zapisnik, id_na_prekrsok)
|
|---|
| 221 | VALUES
|
|---|
| 222 | (1, 30000006, 1);
|
|---|
| 223 |
|
|---|
| 224 | select * from stavka_zapisnik sz
|
|---|
| 225 | where sz.id_na_zapisnik =30000006;
|
|---|
| 226 |
|
|---|
| 227 | --update
|
|---|
| 228 | UPDATE Stavka_Zapisnik
|
|---|
| 229 | SET
|
|---|
| 230 | id_na_prekrsok = 2
|
|---|
| 231 | WHERE id_na_zapisnik = 30000006 and id_stavka =32910317;
|
|---|
| 232 |
|
|---|
| 233 | --insert posle indeks
|
|---|
| 234 | INSERT INTO Stavka_Zapisnik
|
|---|
| 235 | (reden_broj, id_na_zapisnik, id_na_prekrsok)
|
|---|
| 236 | VALUES
|
|---|
| 237 | (1, 30000011, 1);
|
|---|
| 238 |
|
|---|
| 239 | select * from stavka_zapisnik sz
|
|---|
| 240 | where sz.id_na_zapisnik =30000011;
|
|---|
| 241 |
|
|---|
| 242 | --update posle indeks
|
|---|
| 243 | UPDATE Stavka_Zapisnik
|
|---|
| 244 | SET
|
|---|
| 245 | id_na_prekrsok = 2
|
|---|
| 246 | WHERE id_na_zapisnik = 30000011 and id_stavka =32910318;
|
|---|
| 247 |
|
|---|
| 248 |
|
|---|
| 249 | -- za v_neplateni_kazni
|
|---|
| 250 | select *
|
|---|
| 251 | from v_neplateni_kazni vnk
|
|---|
| 252 | where vnk.embg_prekrsitel ='0412992470302';
|
|---|
| 253 |
|
|---|
| 254 |
|
|---|
| 255 | --insert
|
|---|
| 256 | INSERT INTO Uplata
|
|---|
| 257 | (iznos, status, datum_uplata, Uplatil_Gragjanin, id_zapisnik, nacin_plakanje)
|
|---|
| 258 | VALUES
|
|---|
| 259 | (50, 'Neplateno', NULL, '0412992470302', 30000006, NULL);
|
|---|
| 260 |
|
|---|
| 261 | --update
|
|---|
| 262 | UPDATE Uplata
|
|---|
| 263 | SET
|
|---|
| 264 | status = 'Plateno',
|
|---|
| 265 | datum_uplata = CURRENT_DATE,
|
|---|
| 266 | nacin_plakanje = 'Platezna karticka'
|
|---|
| 267 | WHERE id_zapisnik = 30000006;
|
|---|
| 268 |
|
|---|
| 269 | --posle indeks
|
|---|
| 270 |
|
|---|
| 271 |
|
|---|
| 272 | CREATE INDEX idx_stavka_zapisnik_id_zapisnik ON stavka_zapisnik(id_na_zapisnik);
|
|---|
| 273 |
|
|---|
| 274 |
|
|---|
| 275 | CREATE INDEX idx_uplata_id_zapisnik ON uplata(id_zapisnik);
|
|---|
| 276 |
|
|---|
| 277 | --insert posle indeks
|
|---|
| 278 | INSERT INTO Uplata
|
|---|
| 279 | (iznos, status, datum_uplata, Uplatil_Gragjanin, id_zapisnik, nacin_plakanje)
|
|---|
| 280 | VALUES
|
|---|
| 281 | (50, 'Neplateno', NULL, '0412992470302', 30000006, NULL);
|
|---|
| 282 |
|
|---|
| 283 | -- update posle indeks
|
|---|
| 284 | UPDATE Uplata
|
|---|
| 285 | SET
|
|---|
| 286 | status = 'Plateno',
|
|---|
| 287 | datum_uplata = CURRENT_DATE,
|
|---|
| 288 | nacin_plakanje = 'Platezna karticka'
|
|---|
| 289 | WHERE id_zapisnik = 30000006;
|
|---|
| 290 |
|
|---|
| 291 | select *
|
|---|
| 292 | from uplata u
|
|---|
| 293 | where u.id_zapisnik =30000006
|
|---|
| 294 |
|
|---|
| 295 | -- za v_policaici_prosek_zapisnici
|
|---|
| 296 | select *
|
|---|
| 297 | from v_policaici_prosek_zapisnici vppz
|
|---|
| 298 | where vppz.embg_p ='3007982480021'
|
|---|
| 299 |
|
|---|
| 300 | --za v_povtoreni_prekrsoci
|
|---|
| 301 |
|
|---|
| 302 | select *
|
|---|
| 303 | from v_povtoreni_prekrsoci vpp
|
|---|
| 304 | where vpp.embg ='0412992470302'
|
|---|
| 305 |
|
|---|
| 306 |
|
|---|
| 307 | --za v_istorija_gragjanin
|
|---|
| 308 | select *
|
|---|
| 309 | from v_istorija_gragjanin vig
|
|---|
| 310 | where vig.embg ='0412992470302'
|
|---|
| 311 |
|
|---|
| 312 |
|
|---|
| 313 | -- za v_policaici_prosek_zapisnici
|
|---|
| 314 | select *
|
|---|
| 315 | from v_policaici_prosek_zapisnici vppz
|
|---|
| 316 | where vppz.policaec_ime ='Никола'
|
|---|
| 317 |
|
|---|
| 318 |
|
|---|
| 319 |
|
|---|
| 320 | --za v_povtoreni_prekrsoci
|
|---|
| 321 |
|
|---|
| 322 | select *
|
|---|
| 323 | from v_povtoreni_prekrsoci vpp
|
|---|
| 324 | where vpp.ime ='Виолета'
|
|---|
| 325 |
|
|---|
| 326 |
|
|---|
| 327 | --za v_istorija_gragjanin
|
|---|
| 328 | select *
|
|---|
| 329 | from v_istorija_gragjanin vig
|
|---|
| 330 | where vig.ime='Оливера'
|
|---|
| 331 |
|
|---|
| 332 |
|
|---|
| 333 |
|
|---|
| 334 | ----materialized
|
|---|
| 335 | --view #4
|
|---|
| 336 | CREATE MATERIALIZED VIEW v_povtoreni_prekrsoci_mv AS
|
|---|
| 337 | WITH Prekrsoci_Stats AS (
|
|---|
| 338 | SELECT
|
|---|
| 339 | z.EMBG_Prekrsuvach,
|
|---|
| 340 | sz.id_na_prekrsok,
|
|---|
| 341 | COUNT(*) AS broj_povtori,
|
|---|
| 342 | MIN(z.datum) AS prv_pat,
|
|---|
| 343 | MAX(z.datum) AS posleden_pat,
|
|---|
| 344 | SUM(k.iznos_kazna) AS vkupen_iznos_kazni
|
|---|
| 345 | FROM Zapisnik z
|
|---|
| 346 | JOIN Stavka_Zapisnik sz ON z.id_na_zapisnik = sz.id_na_zapisnik
|
|---|
| 347 | JOIN Prekrsok p ON sz.id_na_prekrsok = p.id_prekrsok
|
|---|
| 348 | JOIN Kazna k ON p.id_kazna = k.id_kazna
|
|---|
| 349 | GROUP BY z.EMBG_Prekrsuvach, sz.id_na_prekrsok
|
|---|
| 350 | HAVING COUNT(*) > 1
|
|---|
| 351 | )
|
|---|
| 352 | SELECT
|
|---|
| 353 | g.EMBG,g.ime,g.prezime,
|
|---|
| 354 | p.id_prekrsok,p.ime AS prekrsok,
|
|---|
| 355 | ps.broj_povtori,ps.prv_pat,ps.posleden_pat,ps.vkupen_iznos_kazni
|
|---|
| 356 | FROM Prekrsoci_Stats ps
|
|---|
| 357 | JOIN Gragjanin g ON ps.EMBG_Prekrsuvach = g.EMBG
|
|---|
| 358 | JOIN Prekrsok p ON ps.id_na_prekrsok = p.id_prekrsok;
|
|---|
| 359 |
|
|---|
| 360 | select *
|
|---|
| 361 | from v_povtoreni_prekrsoci_mv vppm
|
|---|
| 362 | where vppm.embg ='0412992470302'
|
|---|
| 363 |
|
|---|
| 364 |
|
|---|
| 365 | -- view #5
|
|---|
| 366 | CREATE MATERIALIZED VIEW v_policaici_prosek_zapisnici_mv AS
|
|---|
| 367 | WITH Policaec_Stats AS (
|
|---|
| 368 | SELECT
|
|---|
| 369 | EMBG_Policaec,
|
|---|
| 370 | COUNT(id_na_zapisnik) AS vkupno_zapisnici,
|
|---|
| 371 | MIN(datum) AS prv_zapisnik,
|
|---|
| 372 | MAX(datum) AS posleden_zapisnik
|
|---|
| 373 | FROM Zapisnik
|
|---|
| 374 | GROUP BY EMBG_Policaec
|
|---|
| 375 | )
|
|---|
| 376 | SELECT
|
|---|
| 377 | pol.EMBG_P,pol.broj_na_znacka,
|
|---|
| 378 | g.ime AS policaec_ime,g.prezime AS policaec_prezime,
|
|---|
| 379 | ps.vkupno_zapisnici,ps.prv_zapisnik,ps.posleden_zapisnik,
|
|---|
| 380 | GREATEST(DATE_PART('year', AGE(ps.posleden_zapisnik, ps.prv_zapisnik)) * 12 +
|
|---|
| 381 | DATE_PART('month', AGE(ps.posleden_zapisnik, ps.prv_zapisnik)), 1) AS aktivni_meseci,
|
|---|
| 382 | (ps.vkupno_zapisnici::numeric /
|
|---|
| 383 | GREATEST(DATE_PART('year', AGE(ps.posleden_zapisnik, ps.prv_zapisnik)) * 12 +
|
|---|
| 384 | DATE_PART('month', AGE(ps.posleden_zapisnik, ps.prv_zapisnik)),
|
|---|
| 385 | 1)::numeric) AS prosek_zapisnici_po_mesec
|
|---|
| 386 | FROM Policaec_Stats ps
|
|---|
| 387 | JOIN Policaec pol ON ps.EMBG_Policaec = pol.EMBG_P
|
|---|
| 388 | JOIN Gragjanin g ON pol.EMBG_P = g.EMBG;
|
|---|
| 389 |
|
|---|
| 390 |
|
|---|
| 391 | select *
|
|---|
| 392 | from v_policaici_prosek_zapisnici_mv vppzm
|
|---|
| 393 | where vppzm.broj_na_znacka ='ZN-S-0006'
|
|---|
| 394 |
|
|---|
| 395 |
|
|---|
| 396 | -- view #6
|
|---|
| 397 | CREATE MATERIALIZED VIEW v_istorija_gragjanin_mv AS
|
|---|
| 398 | WITH Zapisnik_Stats AS (
|
|---|
| 399 | SELECT
|
|---|
| 400 | EMBG_Prekrsuvach,
|
|---|
| 401 | COUNT(DISTINCT z.id_na_zapisnik) AS vkupno_zapisnici,MIN(z.datum) AS prv_prekrsok,MAX(z.datum) AS posleden_prekrsok,
|
|---|
| 402 | COUNT(sz.id_stavka) AS vkupno_prekrshoci,COUNT(DISTINCT sz.id_na_prekrsok) AS razlichni_tipovi,
|
|---|
| 403 | COALESCE(SUM(k.iznos_kazna), 0) AS vkupen_iznos_kazni
|
|---|
| 404 | FROM Zapisnik z
|
|---|
| 405 | LEFT JOIN Stavka_Zapisnik sz ON z.id_na_zapisnik = sz.id_na_zapisnik
|
|---|
| 406 | LEFT JOIN Prekrsok p ON sz.id_na_prekrsok = p.id_prekrsok
|
|---|
| 407 | LEFT JOIN Kazna k ON p.id_kazna = k.id_kazna
|
|---|
| 408 | GROUP BY EMBG_Prekrsuvach
|
|---|
| 409 | ),
|
|---|
| 410 | Uplata_Stats AS (
|
|---|
| 411 | SELECT
|
|---|
| 412 | z.EMBG_Prekrsuvach,
|
|---|
| 413 | COALESCE(SUM(CASE WHEN u.status = 'Plateno' THEN u.iznos END), 0) AS vkupno_plateno,
|
|---|
| 414 | COALESCE(SUM(CASE WHEN u.status = 'Neplateno' THEN u.iznos END), 0) AS vkupen_dolg,
|
|---|
| 415 | COUNT(CASE WHEN u.status = 'Neplateno' THEN u.id_uplata END) AS broj_neplateni
|
|---|
| 416 | FROM Uplata u
|
|---|
| 417 | JOIN Zapisnik z ON u.id_zapisnik = z.id_na_zapisnik
|
|---|
| 418 | GROUP BY z.EMBG_Prekrsuvach
|
|---|
| 419 | )
|
|---|
| 420 | SELECT
|
|---|
| 421 | g.EMBG,g.ime,g.prezime,g.datum_ragjanje,
|
|---|
| 422 | zs.vkupno_zapisnici,zs.vkupno_prekrshoci,zs.razlichni_tipovi,zs.vkupen_iznos_kazni,
|
|---|
| 423 | COALESCE(us.vkupno_plateno, 0) AS vkupno_plateno,
|
|---|
| 424 | COALESCE(us.vkupen_dolg, 0) AS vkupen_dolg,
|
|---|
| 425 | COALESCE(us.broj_neplateni, 0) AS broj_neplateni,
|
|---|
| 426 | zs.prv_prekrsok,zs.posleden_prekrsok
|
|---|
| 427 | FROM Gragjanin g
|
|---|
| 428 | JOIN Zapisnik_Stats zs ON g.EMBG = zs.EMBG_Prekrsuvach
|
|---|
| 429 | LEFT JOIN Uplata_Stats us ON g.EMBG = us.EMBG_Prekrsuvach;
|
|---|
| 430 |
|
|---|
| 431 | select *
|
|---|
| 432 | from v_istorija_gragjanin_mv vig
|
|---|
| 433 | where vig.prezime='Петровски'
|
|---|
| 434 |
|
|---|
| 435 |
|
|---|
| 436 | -----------refresh
|
|---|
| 437 | REFRESH MATERIALIZED VIEW v_povtoreni_prekrsoci_mv;
|
|---|
| 438 | REFRESH MATERIALIZED VIEW v_policaici_prosek_zapisnici_mv;
|
|---|
| 439 | REFRESH MATERIALIZED VIEW v_istorija_gragjanin_mv;
|
|---|