wiki:AdvancedReports

Version 21 (modified by 201063, 17 months ago) ( diff )

--

Напредни извештаи од базата (SQL и складирани процедури)

Прашалник 1

За секое прифатилиште, идентификациски број, име, електронска пошта, телефонски број, име на организацијата во која припаѓа тоа прифатилиште и просечен број на посвојувачи кои се верификувани од страна на вработени во тоа прифатилиште.

select 
        q2.id_shelter,
        q2.name_shelter,
        q2.email_shelter,
        q2.telephone_shelter,
        org.name_organisation as name_of_organisation,
        q2.average_verified_adopters
from
        (
                select 
                        shelter.id_shelter,
                        shelter.name_shelter,
                        shelter.email_shelter,
                        shelter.telephone_shelter,
                        avg(adopters_verified) as average_verified_adopters
                from 
                        shelter
                left join
                        (
                                select
                                        employee.id_user as employee_id,
                                        employee.id_shelter as shelter_id,
                                        count(distinct adopter.id_user) as adopters_verified
                                from 
                                        employee
                                join adopter
                                        on adopter.verified_by_employee = employee.id_user
                                group by 
                                        employee.id_user
                        ) as q1
                        on q1.shelter_id = shelter.id_shelter 
                group by 
                        shelter.id_shelter
        ) as q2              
left join shelter as sh
        on sh.id_shelter = q2.id_shelter
left join organisation as org
        on org.id_organisation = sh.id_organisation
order by 
        q2.average_verified_adopters desc

Прашалник 2

За секое посвојување, идентификациски број, почетен и краен датум и статус. За посвојувачот се прикажуваат името, електронската пошта и телефонскиот број. За посвојувањето се пресметуваат број на миленици, број на различни видови (мачки, кучиња, птици) и севкупен број на терапии и интервенции потребни на сите миленици.

select 
        q2.id_adoption as id,
        q2.start_date,
        q2.end_date_foster,
        q2.status,
        user_table.name_user as adopter_name,
        user_table.email_user as adopter_email,
        user_table.telephone_user as adopter_phone,
        q2.number_of_pets,
        q2.number_of_species,
        q2.total_therapies,
        q2.total_interventions
from 
        (
                select 
                        adoption.id_adoption,
                        adoption.start_date,
                        adoption.end_date_foster,
                        case 
                        when adoption.approved = false then 'under review'
                        when adoption.approved = true then 'approved'
                        end 
                        as status,
                    count(distinct q1.id_pet) as number_of_pets,
                    count(distinct q1.species) as number_of_species,
                    sum(q1.therapies) as total_therapies,
                    sum(q1.interventions) as total_interventions
                from
                        (
                                select 
                                        pet.id_pet,
                                        pet.name_pet,
                                        pet.id_adoption,
                                        pet.species,
                                    count(distinct pnt.id_therapy) as therapies,
                                    count(distinct description) as interventions
                                from 
                                        pet
                                left join
                                        pet_needs_therapy pnt
                                        on pnt.id_pet = pet.id_pet 
                                left join 
                                        pet_needs_intervention_in_vet_clinic pni
                                        on pni.id_pet = pet.id_pet 
                                group by 
                                        pet.id_pet
                        ) as q1
                right join 
                        adoption
                        on q1.id_adoption = adoption.id_adoption 
                group by 
                        adoption.id_adoption
        ) as q2
left join       
        adoption
        on adoption.id_adoption = q2.id_adoption
left join 
        adopter 
        on adopter.id_user = adoption.id_adopter 
left join 
        user_table
        on user_table.id_user = adopter.id_user 

Прашалник 3

(text here)

--sql here

Прашалник 4

(text here)

--sql here

Прашалник 5

Приказ за секоја година, тип на милениче со најголем број на посвојувања

select q2.god as godina, q2.maximum as max, 
        case 
        when q3.species = 0 then 'cat'
        when q3.species = 1 then 'dog'
        when q3.species = 2 then 'bird'
        end as species
        
from
        (       select q1.godina as god, max(broj_posvojuvanja) as maximum from
                (
                --posvojuvanja po godini i tipovi na milenichinja
                select extract(year from a.start_date) as godina, p2.species, count(p2.id_pet) as broj_posvojuvanja
                from adoption a 
                join pet p2 on a.id_adoption = p2.id_adoption 
                where (end_date_foster is null) and (a.approved is true)
                group by godina, p2.species
                order by godina
                ) q1
                group by godina
        )q2
        join
        (
        select extract(year from a.start_date) as godina, p2.species, count(p2.id_pet) as broj_posvojuvanja
                from adoption a
                join pet p2 on a.id_adoption = p2.id_adoption 
                where (end_date_foster is null) and (a.approved is true)
                group by godina, p2.species
                order by godina
        ) q3
on q2.god = q3.godina and q2.maximum = q3.broj_posvojuvanja

Прашалник 6

(text here)

--sql here

Прашалник 7

За секој посвојувач, број на посвоени миленичиња од секој вид (мачки, кучиња, птици) и вкупен број посвоени миленици. Табелата е подредена во опаѓачки редослед според бројот на посвојувања т.ш. посвојувачот со највеќе посвојувања е во првиот ред.

select 
        ut.name_user as posvojuvac, 
        count(distinct pm.id_pet) as broj_posvoeni_macki,
        count(distinct pd.id_pet) as broj_posvoeni_kucinja,
        count(distinct pp.id_pet) as broj_posvoeni_ptici,
        count(distinct p.id_pet) as vkupno_posvoeni_milenici
from
        adopter a
join 
        user_table ut on a.id_user = ut.id_user
left join 
        adoption ad on ad.id_adopter = a.id_user
left join 
        pet pm on pm.id_adoption = ad.id_adoption
        and
        pm.species = 0
left join 
        pet pd on pd.id_adoption = ad.id_adoption
        and
        pd.species = 1
left join 
        pet pp on pp.id_adoption = ad.id_adoption
        and
        pp.species = 2
left join
        pet p on p.id_adoption = ad.id_adoption 
group by 
        a.id_user, ut.name_user
order by 
        vkupno_posvoeni_milenici desc

Назад кон почетна

Note: See TracWiki for help on using the wiki.