Changes between Version 81 and Version 82 of AdvancedApplicationDevelopment


Ignore:
Timestamp:
09/13/24 14:40:40 (2 months ago)
Author:
184006
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedApplicationDevelopment

    v81 v82  
    1616DROP COLUMN IF EXISTS petcares;
    1717
    18 
     18== Додадени прашалници во P3
     191. За секој ветеринарен центар да се прикажат вкупниот број на посети, вкупниот број на работни позиции за доктори и вкупниот број на посети изразени во проценти.
     20'''''Резултантна шема: (vet_center_name, total_visits, total_jobs, visit_percentage)'''''
     21{{{
     22WITH 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),
     37TotalVisitCount AS (
     38    SELECT
     39        SUM(total_visits) AS total_visits_all_centers
     40    FROM
     41        VetCenterVisitData
     42)
     43SELECT
     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
     48FROM
     49    VetCenterVisitData vcd,
     50    TotalVisitCount tvc
     51ORDER BY
     52    visit_percentage DESC;
     53}}}
     54
     55
     562. За секој корисник покрај неговото име и email, да се испечати email_Provider, вкупниот број на миленици кои што ги поседува корисникот, колку од нив се мачиња а колку кучиња и дали корисникот има посетено ветеринарен центар во Skopje. 
     57'''''Резултантна шема: (name, email, email_provider, total_pets, total_cats, total dogs, visited_vet_center_in_skopje)'''''
     58{{{
     59SELECT
     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
     82FROM
     83    users u
     84LEFT JOIN
     85    pets p ON u.ID = p.usersID
     86LEFT JOIN
     87    type_of_pets tp ON p.typeofpetsid = tp.ID  -- Поврзување со табелата type_of_pets
     88GROUP BY
     89    u.ID, u.email;
     90}}}
    1991
    2092ALTER TABLE pet_cares