Sobes.tech
Junior

Fitness klubok látogatottsági elemzése Ön egy fitness klubokat hálózatban dolgozó elemzőként. Információkkal rendelkezik a felhasználók látogatásairól és az általuk vásárolt tagságokról. Elemzéseket kell végeznie a tagságok hatékonyságáról. Számolja ki minden tagságtípus esetén: • az ezen típusú tagságot használó felhasználók összes számát. Csak az egyedi user_id-ket vegye figyelembe; • az ezen tagsággal kapcsolatos összes látogatást. Vegye figyelembe az összes ilyen tagsággal rendelkező felhasználó látogatását; • az adott tagságtípusú felhasználók arányát százalékban az összes felhasználóhoz képest (kerekítve egy tizedesre). A számításhoz használja az adott tagságtípussal rendelkező felhasználók számának és az összes egyedi felhasználó számának arányát. Minden felhasználónak csak egy tagsága lehet. Rendezze az eredményt tagságtípus szerint alfabetikus sorrendbe. Bemeneti formátum Memberships táblázat: • membership_id (int) — egyedi tagságazonosító • user_id (int) — felhasználó azonosító • membership_type (text) — tagságtípus Visits táblázat: • visit_id (int) — egyedi látogatásazonosító • user_id (int) — felhasználó azonosító • visit_date (timestamp) — látogatás dátuma és időpontja Az adatok nem tartalmaznak hiányzó vagy hibás értékeket. Kimeneti formátum A lekérdezésnek olyan táblát kell visszaadnia, amely a következő mezőket tartalmazza ebben a sorrendben: • membership_type (text) — tagságtípus • users_count (int) — ezen típusú felhasználók száma • total_visits (int) — ezen felhasználók összes látogatásának száma • user_share (numeric) — ezen típusú felhasználók aránya százalékban az összes felhasználóhoz képest, egy tizedesre kerekítve Az eredményt tagságtípus szerint alfabetikus sorrendbe rendezze.

sobes.tech MI

Válasz az MI-től

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;