| Version 23 (modified by , 3 years 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
За секоја храна, бројот на миленици кои ја јадат таа храна кои имаат ниска физичка активност и примаат терапии.
select
food.name_food as food_name,
sum(q2.has_therapies) as total_pets
from
(
select
q1.pet_id,
q1.has_therapies
from
(
select
pet.id_pet as pet_id,
count(therapy.id_therapy) as has_therapies
from
pet
join
pet_needs_therapy pnt
on pnt.id_pet = pet.id_pet
join
therapy
on therapy.id_therapy = pnt.id_therapy
group by
pet.id_pet
) as q1
join personal_profile
on q1.pet_id = personal_profile.id_pet
where
personal_profile.physical_activity = 0
) as q2
join pet_preferably_eats_food ppef
on ppef.id_pet = q2.pet_id
join food
on food.id_food = ppef.id_food
group by
food.id_food
order by
total_pets
Прашалник 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
