1 | | == Список на идеи за покомплексни аналитички прашалници за статистички извештаи - некаков наслов за секоја од идеите и краток опис што сакате да биде резултатот |
2 | | == Како се имплементира секоја од идеите со SQL и тоа по можност со само еден прашалник и да го наведете прашалникот. Доколку не може да се имплементира со еден покомплексен прашалник тогаш треба да го имплементирате со процедурален код како дел од складирана процедура/функција и да го наведете кодот |
| 1 | = Напредни извештаи од базата (SQL) |
| 2 | == Вкупна количина потрошен инсулин за дијабетичари |
| 3 | - **Член**: Никола Торбовски 151200 |
| 4 | - **Опис**: Вкупна количина на потрошен конкретен инсулин за секој дијабетичар според вредностите внесени во секој запис со инсулин, групирани за сите години и сите месеци (прва група), за секоја година поединечно (втора група) и за секоја година и месец поединечно (трета група) |
| 5 | |
| 6 | {{{ |
| 7 | #!sql |
| 8 | |
| 9 | select |
| 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 |
| 23 | from ( |
| 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 |
| 38 | join insulin i on tmp.insulin_id = i.id |
| 39 | join medikament m on i.id = m.id |
| 40 | join tip_insulin ti on i.tip_insulin_id = ti.id |
| 41 | join dijabeticar d on tmp.dijabeticar_id = d.id |
| 42 | join tip_dijabetes td on d.tip_dijabetes_id = td.id |
| 43 | join covek c on d.id = c.id; |
| 44 | }}} |
| 45 | == Три-месечен просек на измерен шеќер во крв кај дијабетичари == |
| 46 | - **Член**: Никола Торбовски 151200 |
| 47 | - **Опис**: Три-месечен просек на измерен шеќер во крв кај дијабетичари пресметан за секој месец од годината за кој има запис и претходните два месеца(календарски) |
| 48 | {{{ |
| 49 | #!sql |
| 50 | |
| 51 | select |
| 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 |
| 62 | from |
| 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 |
| 68 | from zapis_so_izmeren_sekjer zsis |
| 69 | group by zsis.dijabeticar_id , date_trunc('month', zsis."data") |
| 70 | order by zsis.dijabeticar_id , date_trunc('month', zsis."data") |
| 71 | ) as A |
| 72 | join dijabeticar d on A.id = d.id |
| 73 | join tip_dijabetes td on d.tip_dijabetes_id = td.id |
| 74 | join covek c on d.id = c.id; |
| 75 | }}} |