| 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 | }}} |