Changes between Initial Version and Version 1 of AdvancedReports


Ignore:
Timestamp:
12/25/22 22:30:52 (21 months ago)
Author:
201050
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReports

    v1 v1  
     1== 1.Извештај за првите 3 валидни прашања кои имаат барем два одговори од професор, од тие три се бира прашањето кое има најмногу одговори во последните 4 месеци \\
     2
     3{{{
     4select q3.maximum, p3.*
     5from (
     6select max(q2.count) as maximum, q2.pra_id
     7from(
     8select distinct q.count, q.pra_id as pra_id
     9from
     10(
     11        select count(distinct o.o_id), p.pra_id as pra_id from prasanja p
     12        join odgovori o on p.pra_id = o.pra_id
     13        where o.p_id is not null and
     14        p.pra_datum between now()-interval '4 months' and now()
     15        group by p.pra_id
     16
     17) as q
     18join prasanja p on q.pra_id = p.pra_id
     19join odgovori o on o.pra_id = p.pra_id
     20where q.count >=2 and o.o_validen is true
     21) as q2
     22join prasanja p2 on p2.pra_id = q2.pra_id
     23group by q2.pra_id
     24order by maximum desc
     25limit 1
     26) as q3
     27join prasanja p3 on q3.pra_id = p3.pra_id
     28}}}
     29
     30== 2.
     31
     32== 3.Извештај за пронаоѓање на најдобрите професори т.е. професорите кои имаат одговори со најдобри рејтингзи, имаат поставено најмногу материјали и предаваат најмногу курсеви.\\
     33{{{
     34select parts.p_korisnicko_ime korisnicko_ime, parts.rejt+parts.mat+parts.kurs as vk from
     35(
     36        select prof.p_korisnicko_ime, case when top_odg.num_rejting is null then 0 else top_odg.num_rejting end as rejt,
     37                                                                  case when najm_mat.num_mat is null then 0 else najm_mat.num_mat end as mat,
     38                                                                  case when najm_kurs.num_kurs is null then 0 else najm_kurs.num_kurs end as kurs
     39        from profesori prof
     40        left join
     41        (
     42                select o.p_id, q1.c1+q2.c2 as num_rejting  from odgovori o
     43                join
     44                (
     45                        select o.o_id, count(o.o_id) c1 from odgovori o
     46                        left join dava_reakcija dr on o.o_id = dr.o_id
     47                        where o.p_id is not null and dr.reakcija is true
     48                        group by  o.o_id
     49                ) q1 on o.o_id = q1.o_id
     50                join
     51                (
     52                        select o.o_id,  count(o.o_id) c2 from odgovori o
     53                        left join reagira_na rn on o.o_id = rn.o_id
     54                        where o.p_id is not null and rn.reakcija is true
     55                        group by o.o_id
     56                ) q2 on o.o_id = q2.o_id
     57                order by num_rejting desc
     58        ) top_odg on prof.p_id = top_odg.p_id
     59        left join
     60        (
     61                select p.p_id, count(m.m_id) num_mat from materijali m
     62                join profesori p on m.p_id = p.p_id
     63                group by p.p_id
     64        ) najm_mat on prof.p_id =najm_mat.p_id
     65        left join
     66        (
     67                select p.p_id, count(epn.p_id) num_kurs from kursevi ku
     68                join e_prof_na epn on ku.ku_id=epn.ku_id 
     69                join profesori p on epn.p_id =p.p_id
     70                group by p.p_id
     71        ) najm_kurs on prof.p_id = najm_kurs.p_id
     72) as parts
     73order by vk desc
     74}}}
     75== 4. Извештај за секој предмет најпопуларните 3 курсеви во последните 3 месеци кои имаат барем по 2 исти категории за материјали и прашања\\
     76{{{
     77select pr.pr_id, pr.pr_ime, q1.ku_ime, q1.br_isti_kategorii, count(distinct q2.pra_id) as br_prasanja from predmeti pr
     78join kursevi ku on pr.pr_id = ku.pr_id
     79join
     80(
     81        select ku.ku_id, ku.ku_ime, count(*) br_isti_kategorii from kursevi ku
     82        left join prasanja pra on ku.ku_id  = pra.ku_id
     83        left join e_oznaceno_so eos on pra.pra_id = eos.pra_id
     84        left join materijali m on ku.ku_id = m.ku_id
     85        where
     86                eos.ka_id = m.ka_id
     87        group by ku.ku_id, ku.ku_ime
     88        having count(*)>=2
     89        order by br_isti_kategorii desc
     90        limit 3
     91       
     92) q1 on ku.ku_id = q1.ku_id
     93join
     94(
     95        select pras.ku_id as ku_id, pras.pra_id from prasanja pras
     96        where
     97                now()>=pras.pra_datum and
     98                age(now(),pras.pra_datum)<= interval'3 months'
     99) q2 on ku.ku_id=q2.ku_id
     100group by pr.pr_id, pr.pr_ime,q1.ku_ime, q1.br_isti_kategorii
     101order by br_prasanja desc
     102}}}