Junior
78
Fitnessi klubide külastuste analüüs Te töötate analüütikuna fitnessi klubide võrgustikus. Teil on teave kasutajate külastuste ja nende ostetud liikmelisuste kohta. On vaja analüüsida liikmelisuste tõhusust. Arvutage iga liikmelisuse tüübi kohta: • selle liikmelisuse kasutanud unikaalsete user_id-de koguarv; • selle liikmelisusega tehtud külastuste koguarv. Arvestage kõiki selle liikmelisusega kasutajate külastusi; • selle liikmelisuse kasutajate osakaal protsentides kogu kasutajate arvust (ümardatuna ühe komakoha võrra). Arvutamiseks kasutage selle liikmelisuse kasutajate arvu kogu unikaalsete kasutajate arvuga. Iga kasutaja võib omada ainult ühte liikmelisust. Tulemuse sorteerige liikmelisuse tüübi järgi tähestikulises järjekorras. Sisendvorming Liikmelisuste tabel: • membership_id (int) — unikaalne liikmelisuse ID • user_id (int) — kasutaja ID • membership_type (text) — liikmelisuse tüüp Külastuste tabel: • visit_id (int) — külastuse unikaalne ID • user_id (int) — kasutaja ID • visit_date (timestamp) — külastuse kuupäev ja kellaaeg Andmed ei sisalda tühje või valeväärtusi. Väljundi formaat Päring peaks tagastama tabeli koos väljadega järjekorras: • membership_type (text) — liikmelisuse tüüp • users_count (int) — selle liikmelisuse tüüpi unikaalsete kasutajate arv • total_visits (int) — selle liikmelisusega tehtud külastuste koguarv • user_share (numeric) — selle liikmelisuse kasutajate osakaal protsentides kogu kasutajate arvust (ümardatuna ühe komakoha võrra) Tulemus sorteeritakse liikmelisuse tüübi järgi tähestikulises järjekorras.
Ettevõtted, kust küsiti
01.tech
Vastus AI-lt
sobes.tech 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;