Sobes.tech
Junior

Fitnesa klubu apmeklējumu analīze Jūs strādājat kā analītiķis fitnesa klubu tīklā. Jums ir informācija par lietotāju apmeklējumiem un viņu iegādātajām abonementiem. Ir jāanalizē abonementu efektivitāte. Aprēķiniet katra abonementa veida: • kopējo lietotāju skaitu, kuri ir izmantojuši šo abonementa veidu. Ņemiet vērā tikai unikālos user_id; • kopējo apmeklējumu skaitu ar šo abonementu. Ņemiet vērā visus lietotāju apmeklējumus ar šo abonementu; • šo abonementa lietotāju daļu procentos no kopējā lietotāju skaita (noapaļotu līdz vienam ciparam aiz komata). Lai aprēķinātu daļu, izmantojiet šo abonementa lietotāju skaitu attiecībā pret kopējo unikālo lietotāju skaitu. Katram lietotājam var būt tikai viens abonements. Rezultātu kārtojiet pēc abonementa veida alfabētiskā secībā. Ievades formāts Abonementu tabula: • membership_id (int) — unikāls abonementa identifikators • user_id (int) — lietotāja identifikators • membership_type (text) — abonementa veids Apmeklējumu tabula: • visit_id (int) — apmeklējuma unikāls identifikators • user_id (int) — lietotāja identifikators • visit_date (timestamp) — apmeklējuma datums un laiks Dati nesatur tukšas vai nepareizas vērtības. Izvades formāts Vaicājumam jāatgriež tabula ar laukiem šādā secībā: • membership_type (text) — abonementa veids • users_count (int) — unikālo lietotāju skaits ar šo abonementa veidu • total_visits (int) — kopējais apmeklējumu skaits ar šo abonementu • user_share (numeric) — šo abonementa lietotāju daļa procentos no kopējā lietotāju skaita (noapaļota līdz 1 ciparam aiz komata) Rezultāts ir sakārtots pēc abonementa veida alfabētiskā secībā.

sobes.tech AI

Atbilde no AI

sql WITH user_counts AS ( SELECT membership_type, COUNT(DISTINCT user_id) AS users_count FROM memberships GROUP BY membership_type ),

total_users AS ( SELECT COUNT(DISTINCT user_id) AS total FROM memberships ),

visits_count AS ( SELECT m.membership_type, COUNT(v.visit_id) AS total_visits FROM visits v JOIN memberships m ON v.user_id = m.user_id GROUP BY m.membership_type )

SELECT uc.membership_type, uc.users_count, COALESCE(vc.total_visits, 0) AS total_visits, ROUND((uc.users_count::numeric / t.total) * 100, 1) AS user_share FROM user_counts uc JOIN total_users t ON true LEFT JOIN visits_count vc ON uc.membership_type = vc.membership_type ORDER BY uc.membership_type;