Changes between Initial Version and Version 1 of AdvancedReports


Ignore:
Timestamp:
01/15/24 22:15:37 (11 months ago)
Author:
212012
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReports

    v1 v1  
     1= Напредни извештаи од базата (SQL и складирани процедури) =
     2
     3=== Извештај за сите решени случаеви од минатата година кој што
     4ги водат полициските станици во секорот за внатрешни работи во Скопје. Дополнително за секој решен случај да се пресмета бројот на дадени изјави  ===
     5{{{#!sql
     6select cc.c_id as c_id,cc.c_name as c_name,
     7cc.opening_date as opening_date,sc.date_of_closing as date_of_closing,
     8sc.final_document as final_document,
     9(select count(*) from statements  where c_id=cc.c_id) as broj_na_izjavi
     10from
     11sector_of_interal_affairs sia
     12join police_station ps on sia.s_id=ps.s_id
     13join crime_case cc on ps.p_id=cc.p_id
     14join solved_case sc on cc.c_id=sc.c_id
     15where
     16sia.city ~ '(Skopje|Скопје)'
     17}}}
     18
     19=== Извештај за секоја полициска станица, колку вработени полицајци има, колку од нив се вработени во последните 2 години и колку од нив се со македонска националност ===
     20{{{#!sql
     21select ps.p_id, ps.p_address,
     22        count(po.pe_id) as vkupno_policajci,
     23        (select count(*)
     24                        from people p
     25                        join policeman pol on p.pe_id=pol.pe_id
     26                        where
     27                        p.nationality='Македонец' and pol.p_id=ps.p_id) as Makedonci_nachalnici_i_policajci,
     28        (select count(*) from policeman pol
     29        where p_date_of_employment between now()-interval '2 years' and now()
     30        and pol.p_id=ps.p_id ) as Vraboteni_vo_interval_2_god
     31from police_station ps
     32join policeman po on po.p_id = ps.p_id
     33group by ps.p_id;
     34}}}
     35
     36=== Извештај за секоја сектор за внатрешни работи, колку вработени има во сите полициски станици секторот кои што имаат ранг поголем од 2 и се помлади од 30 години ===
     37{{{#!sql
     38select sia.s_id as sector_id, sia.city as sector_city,
     39ps.p_id as police_station_id, ps.p_address as police_station_address,
     40(select count(*) from
     41 people pe
     42 join policeman pl on pe.pe_id=pl.pe_id
     43 where rank>2 and pl.p_id=ps.p_id) as broj_na_vraboteni_so_rang_pogolem_od_2,
     44 (select count(*) from
     45    crime_case cc
     46    join solved_case  sc on cc.c_id=sc.c_id
     47    where
     48    cc.p_id=ps.p_id
     49 ) as broj_na_resheni_slucai
     50from sector_of_interal_affairs sia
     51join police_station ps on sia.s_id=ps.s_id
     52join policeman p on ps.p_id=p.p_id
     53}}}
     54
     55=== Извештај за секоја полициска станица, колку случаи биле отворени со тип на криминал ‘Семејно насилство’ и колку жртви биле жени од ромско потекло  ===
     56{{{#!sql
     57select ps.p_id, ps.p_address,
     58        (
     59        select count(cs.c_id)
     60        from police_station ps
     61        join crime_case cs on cs.p_id = ps.p_id
     62        join statements st on st.c_id = cs.c_id
     63        join victim vic on vic.pe_id = st.victim_pe_id
     64        join people pe on pe.pe_id = vic.pe_id
     65        join case_belongs_to_type_of_crime cbtt on cbtt.c_id = cs.c_id
     66        join type_of_crime toc on toc.t_id = cbtt.t_id
     67        where pe.gender = 'Ж' and toc.t_name = 'Семејно насилство'
     68        and pe.nationality = 'Ромка'
     69        ) as vk_sluchaevi_zheni_zhrtvi
     70from police_station ps
     71group by ps.p_id;
     72}}}
     73
     74=== Извештај за секоја полициска станица кој полицаец има земено најмногу изјави во последната година ===
     75{{{#!sql
     76with stanici_policajci_izjavi
     77         as (select ps.p_id, ps.p_address, pm.pe_id, pm.badge_no, count(s.c_id) br_izjavi
     78             from police_station ps
     79                      left join policeman pm on ps.p_id = pm.p_id
     80                      left join statements s on pm.pe_id = s.pe_id
     81             group by ps.p_id, ps.p_address, pm.pe_id, pm.badge_no),
     82     stanici_max_izjavi
     83         as (select psi.p_id, psi.p_address, max(psi.br_izjavi) max_izjavi
     84             from stanici_policajci_izjavi psi
     85             group by psi.p_id, psi.p_address)
     86
     87select psi.p_id, psi.p_address, psi.pe_id, psi.badge_no, psi.br_izjavi
     88from stanici_policajci_izjavi psi
     89         join stanici_max_izjavi smi
     90              on (psi.p_id, psi.p_address, psi.br_izjavi) = (smi.p_id, smi.p_address, smi.max_izjavi)
     91}}}
     92
     93=== Извештај за секој тип на криминал која полициска станица има отворено најмногу случаеви со тој тип на криминал ===
     94{{{#!sql
     95SELECT
     96    toc.t_id AS type_id,
     97    toc.t_name AS type_name,
     98    ps.p_id AS station_id,
     99    ps.p_address ,
     100    COUNT(cs.c_id) AS case_count
     101FROM
     102    type_of_crime toc
     103JOIN case_belongs_to_type_of_crime cbtt ON toc.t_id = cbtt.t_id
     104JOIN crime_case cs ON cbtt.c_id = cs.c_id
     105JOIN police_station ps ON cs.p_id = ps.p_id
     106GROUP BY
     107    toc.t_id, toc.t_name, ps.p_id, ps.p_address
     108HAVING
     109    COUNT(cs.c_id) = (
     110        SELECT
     111            MAX(case_count)
     112        FROM (
     113            SELECT
     114                toc_sub.t_id AS type_id,
     115                COUNT(cs_sub.c_id) AS case_count
     116            FROM
     117                type_of_crime toc_sub
     118            JOIN
     119                case_belongs_to_type_of_crime cbtt_sub ON toc_sub.t_id = cbtt_sub.t_id
     120            JOIN
     121                crime_case cs_sub ON cbtt_sub.c_id = cs_sub.c_id
     122            GROUP BY
     123                toc_sub.t_id
     124        ) max_cases
     125        WHERE max_cases.type_id = toc.t_id
     126    )
     127ORDER BY
     128    toc.t_id, case_count DESC;
     129}}}