Version 11 (modified by 3 years ago) ( diff ) | ,
---|
Напредни извештаи од базата (SQL и складирани процедури)
Пациент на кој му се извршени највеќе прегледи
create view pacient_najmnogu_pregledi as select pacient_id ,covek.ime,covek.prezime, count (pregled.pregled_id) pacientot_bil_na_pregled from pacient as p join pregled as pregled on pregled.covek_pacient_id=p.covek_pacient_id join covek as covek on covek.covek_id=p.covek_pacient_id group by p.pacient_id,covek.covek_id; select pnp.ime, pnp.prezime ,pnp.pacient_id , pnp.pacientot_bil_na_pregled as broj_pregledi from pacient_najmnogu_pregledi as pnp where pnp.pacientot_bil_na_pregled= (select max(pacientot_bil_na_pregled) from pacient_najmnogu_pregledi);
Број на издадени упати за оддел
create view broj_na_upati as select o.oddel_id ,o.naziv , count(u.oddel_id) as broj_upati from oddel as o join upat as u on u.oddel_id=o.oddel_id group by o.naziv ,o.oddel_id select * from broj_na_upati - --пребарување за сите оддели. select * from broj_na_upati where naziv='Kardiologija' - -- пребарување според назив на одделот.
Број на издадени рецепти за пациентите
create view broj_recepti as select covek_pacient_id ,c.ime ,c.prezime ,count(recepta_id) as broj_recepti from recepta as r join covek as c on c.covek_id=r.covek_pacient_id group by recepta_id ,c.covek_id select covek_pacient_id ,ime ,prezime ,broj_recepti from broj_recepti as br -- за сите пациенти. select covek_pacient_id ,ime ,prezime ,broj_recepti from broj_recepti as br where broj_recepti=(select max(broj_recepti) from broj_recepti) --пациент со најголем број на издадени рецепти. select covek_pacient_id ,ime ,prezime ,broj_recepti from broj_recepti as br where covek_pacient_id=9 --може да се пребарува според пациент.
Доктор кој извршил највеќе прегледи
create view br_pregledi_za_sekoj_doktor as select p.doktor_id, d.br_licenca, count(p.pregled_id) br_pregledi_od_doktor from pregled p join doktor d on p.doktor_id = d.doktor_id group by p.doktor_id, d.doktor_id ; select br_p.doktor_id, br_p.br_licenca, c.ime, c.prezime, br_p.br_pregledi_od_doktor as najvekje_pregledi from br_pregledi_za_sekoj_doktor br_p join covek c on br_p.doktor_id = c.covek_id where br_p.br_pregledi_od_doktor = ( select max(br_pregledi_od_doktor) from br_pregledi_za_sekoj_doktor ) ;
Просечна возраст на пациенти за во даден оддел за претходната година
select oo.bolnica_id, oo.oddel_id, ( select avg(distinct extract (year from age(((case when substring(c.embg, 5, 1) in ('9') then '1'|| substring(c.embg, 5, 3) else '2'|| substring(c.embg, 5, 3) end) || '-' || substring(c.embg, 3, 2) || '-' || substring(c.embg, 1, 2))::date))) as godini from oddel o join bolnica b on o.bolnica_id = b.bolnica_id join upat u on (o.bolnica_id, o.oddel_id) = (u.bolnica_id, u.oddel_id) join rezervacija r on u.upat_id = r.upat_id join termin t on (r.doktor_id, r.termin_id) = (t.doktor_id, t.termin_id) join pacient p on u.covek_pacient_id = p.covek_pacient_id join covek c on p.covek_pacient_id = c.covek_id where extract (year from t.vreme) = extract (year from now() - interval '1 year') group by o.bolnica_id, o.oddel_id having (o.bolnica_id, o.oddel_id) = (oo.bolnica_id, oo.oddel_id) ) prosek_godini_pacienti from oddel oo
Број на доктори во секој оддел
select o.bolnica_id, b.naziv as bolnica, b.grad as bolnica_grad, o.naziv as oddel, count (d.doktor_id) broj_doktori_vo_oddel from oddel o join doktor d on (o.bolnica_id, o.oddel_id) = (d.bolnica_id, d.oddel_id) join bolnica b on o.bolnica_id = b.bolnica_id group by (o.bolnica_id, o.oddel_id), b.naziv, b.grad ;
Note:
See TracWiki
for help on using the wiki.