18 | | |
| 18 | == Додадени прашалници во P3 |
| 19 | 1. За секој ветеринарен центар да се прикажат вкупниот број на посети, вкупниот број на работни позиции за доктори и вкупниот број на посети изразени во проценти. |
| 20 | '''''Резултантна шема: (vet_center_name, total_visits, total_jobs, visit_percentage)''''' |
| 21 | {{{ |
| 22 | WITH VetCenterVisitData AS ( |
| 23 | SELECT |
| 24 | vc.id AS vet_center_id, |
| 25 | vc.name AS vet_center_name, |
| 26 | COUNT(pc.id) AS total_visits, |
| 27 | COUNT(DISTINCT j.id) AS total_jobs |
| 28 | FROM |
| 29 | vet_centers vc |
| 30 | LEFT JOIN |
| 31 | pet_cares pc ON vc.id = pc.vetcentersID |
| 32 | LEFT JOIN |
| 33 | jobs j ON vc.id = j.vetCentersID |
| 34 | GROUP BY |
| 35 | vc.id |
| 36 | ), |
| 37 | TotalVisitCount AS ( |
| 38 | SELECT |
| 39 | SUM(total_visits) AS total_visits_all_centers |
| 40 | FROM |
| 41 | VetCenterVisitData |
| 42 | ) |
| 43 | SELECT |
| 44 | vcd.vet_center_name, |
| 45 | vcd.total_visits, |
| 46 | vcd.total_jobs, |
| 47 | ROUND((vcd.total_visits::decimal / tvc.total_visits_all_centers) * 100, 2) AS visit_percentage |
| 48 | FROM |
| 49 | VetCenterVisitData vcd, |
| 50 | TotalVisitCount tvc |
| 51 | ORDER BY |
| 52 | visit_percentage DESC; |
| 53 | }}} |
| 54 | |
| 55 | |
| 56 | 2. За секој корисник покрај неговото име и email, да се испечати email_Provider, вкупниот број на миленици кои што ги поседува корисникот, колку од нив се мачиња а колку кучиња и дали корисникот има посетено ветеринарен центар во Skopje. |
| 57 | '''''Резултантна шема: (name, email, email_provider, total_pets, total_cats, total dogs, visited_vet_center_in_skopje)''''' |
| 58 | {{{ |
| 59 | SELECT |
| 60 | u.name, |
| 61 | u.email, |
| 62 | CASE |
| 63 | WHEN u.email LIKE '%@yahoo.com' THEN 'yahoo' |
| 64 | WHEN u.email LIKE '%@gmail.com' THEN 'gmail' |
| 65 | WHEN u.email LIKE '%@hotmail.com' THEN 'hotmail' |
| 66 | ELSE 'other' |
| 67 | END AS email_provider, |
| 68 | COUNT(DISTINCT p.ID) AS total_pets, -- Вкупно животни, избегнувајќи дуплирања |
| 69 | SUM(CASE WHEN tp.kind_of_pet = 'Cat' THEN 1 ELSE 0 END) AS total_cats, -- Вкупно мачки |
| 70 | SUM(CASE WHEN tp.kind_of_pet = 'Dog' THEN 1 ELSE 0 END) AS total_dogs, -- Вкупно кучиња |
| 71 | CASE |
| 72 | WHEN EXISTS ( |
| 73 | SELECT 1 |
| 74 | FROM pets_visit_vet_centers pv |
| 75 | JOIN vet_centers vc ON pv.id_vet_centers = vc.ID |
| 76 | JOIN cities c ON vc.citiesid = c.ID -- Поврзување со табелата cities |
| 77 | WHERE pv.id_pets IN (SELECT ID FROM pets WHERE usersID = u.ID) |
| 78 | AND c.name = 'Skopje' -- Проверка за Скопје |
| 79 | ) THEN TRUE |
| 80 | ELSE FALSE |
| 81 | END AS visited_vet_center_in_skopje |
| 82 | FROM |
| 83 | users u |
| 84 | LEFT JOIN |
| 85 | pets p ON u.ID = p.usersID |
| 86 | LEFT JOIN |
| 87 | type_of_pets tp ON p.typeofpetsid = tp.ID -- Поврзување со табелата type_of_pets |
| 88 | GROUP BY |
| 89 | u.ID, u.email; |
| 90 | }}} |