Changes between Version 1 and Version 2 of AdvancedReports


Ignore:
Timestamp:
12/17/23 14:24:56 (7 months ago)
Author:
Nikola Torbovski
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReports

    v1 v2  
    1 == Список на идеи за покомплексни аналитички прашалници за статистички извештаи - некаков наслов за секоја од идеите и краток опис што сакате да биде резултатот
    2 == Како се имплементира секоја од идеите со SQL и тоа по можност со само еден прашалник и да го наведете прашалникот. Доколку не може да се имплементира со еден покомплексен прашалник тогаш треба да го имплементирате со процедурален код како дел од складирана процедура/функција и да го наведете кодот
     1= Напредни извештаи од базата (SQL)
     2== Вкупна количина потрошен инсулин за дијабетичари
     3- **Член**: Никола Торбовски 151200
     4- **Опис**: Вкупна количина на потрошен конкретен инсулин за секој дијабетичар според вредностите внесени во секој запис со инсулин, групирани за сите години и сите месеци (прва група), за секоја година поединечно (втора група) и за секоја година и месец поединечно (трета група)
     5
     6{{{
     7#!sql
     8
     9select
     10        c.id ,
     11        c.ime as dijabeticar_ime,
     12        c.prezime as dijabeticar_prezime,
     13        c.pol ,
     14        c.datum_na_ragjanje ,
     15        d.data_na_otkrivanje as datum_na_otkrivanje_na_dijabetes,
     16        td.ime as tip_dijabetes,
     17        tmp.godina,
     18        tmp.mesec,
     19        tmp.vkupno_doziran_insulin,
     20        m.ime as insulin_ime,
     21        m.proizvoditel as insulin_proizvoditel,
     22        ti.ime as insulin_tip
     23from (
     24        select
     25                zidi.dijabeticar_id,
     26                extract(year from zidi."data") as godina,
     27                extract(month from zidi."data") as mesec,
     28                zidi.insulin_id,
     29                sum(zidi.kolicina) as vkupno_doziran_insulin
     30        from zapis_insulin_doziran_insulin zidi
     31        group by grouping sets(
     32                (zidi.dijabeticar_id, zidi.insulin_id)
     33                , (zidi.dijabeticar_id, extract(year from zidi."data"), zidi.insulin_id)
     34                , (zidi.dijabeticar_id, extract(year from zidi."data"), extract(month from zidi."data"), zidi.insulin_id)
     35        )
     36        order by zidi.dijabeticar_id, extract(year from zidi."data") nulls first, extract(month from zidi."data") nulls first, zidi.insulin_id
     37        ) as tmp
     38join insulin i on tmp.insulin_id = i.id
     39join medikament m on i.id = m.id
     40join tip_insulin ti on i.tip_insulin_id = ti.id
     41join dijabeticar d on tmp.dijabeticar_id = d.id
     42join tip_dijabetes td on d.tip_dijabetes_id = td.id
     43join covek c on d.id = c.id;
     44}}}
     45== Три-месечен просек на измерен шеќер во крв кај дијабетичари ==
     46- **Член**: Никола Торбовски 151200
     47- **Опис**: Три-месечен просек на измерен шеќер во крв кај дијабетичари пресметан за секој месец од годината за кој има запис и претходните два месеца(календарски)
     48{{{
     49#!sql
     50
     51select
     52        c.id ,
     53        c.ime ,
     54        c.prezime ,
     55        c.pol ,
     56        c.datum_na_ragjanje ,
     57        d.data_na_otkrivanje as datum_na_otkrivanje_na_dijabetes,
     58        td.ime as tip_dijabetes,
     59        extract(year from A.godina_mesec) as godina,
     60        extract(month from A.godina_mesec) as mesec,
     61        (sum(A.suma_vrednosti_za_mesec) over (partition by A.id order by A.godina_mesec range between '2 months' preceding and current row) / sum(A.broj_vrednosti_za_mesec) over(partition by A.id order by A.godina_mesec range between '2 months' preceding  and current row)) as prosek_za_prethodni_tri_meseci
     62from
     63(select
     64        zsis.dijabeticar_id as id,
     65        date_trunc('month', zsis."data") as godina_mesec,
     66        sum(zsis.vrednost) as suma_vrednosti_za_mesec,
     67        count(zsis.vrednost) as broj_vrednosti_za_mesec
     68from zapis_so_izmeren_sekjer zsis
     69group by zsis.dijabeticar_id , date_trunc('month', zsis."data")
     70order by zsis.dijabeticar_id , date_trunc('month', zsis."data")
     71) as A
     72join dijabeticar d on A.id = d.id
     73join tip_dijabetes td on d.tip_dijabetes_id = td.id
     74join covek c on d.id = c.id;
     75}}}