Junior
Analyse der Besucherzahlen in Fitnessstudios Sie arbeiten als Analyst in einer Fitnessstudio-Kette. Sie haben Informationen über die Besuche der Nutzer und die von ihnen gekauften Mitgliedschaften. Es ist notwendig, die Effektivität der Nutzung der Mitgliedschaften zu analysieren. Berechnen Sie für jeden Mitgliedschaftstyp: • die Gesamtzahl der Nutzer, die diesen Mitgliedschaftstyp verwendet haben. Berücksichtigen Sie nur eindeutige user_id; • die Gesamtzahl der Besuche mit dieser Mitgliedschaft. Berücksichtigen Sie alle Besuche der Nutzer mit dieser Mitgliedschaft; • den Anteil der Nutzer dieser Mitgliedschaft in Prozent am Gesamtzahl der Nutzer (auf eine Dezimalstelle gerundet). Zur Berechnung des Anteils verwenden Sie das Verhältnis der Nutzer mit dieser Mitgliedschaft zur Gesamtzahl der eindeutigen Nutzer. Jeder Nutzer kann nur eine Mitgliedschaft haben. Sortieren Sie das Ergebnis nach Mitgliedschaftstyp in alphabetischer Reihenfolge. Eingabeformat Tabelle memberships: • membership_id (int) — eindeutige Kennung der Mitgliedschaft • user_id (int) — eindeutige Kennung des Nutzers • membership_type (text) — Typ der Mitgliedschaft Tabelle visits: • visit_id (int) — eindeutige Kennung des Besuchs • user_id (int) — Nutzerkennung • visit_date (timestamp) — Datum und Uhrzeit des Besuchs Die Daten enthalten keine fehlenden oder fehlerhaften Werte. Ausgabeformat Die Abfrage sollte eine Tabelle mit den Feldern in folgender Reihenfolge zurückgeben: • membership_type (text) — Typ der Mitgliedschaft • users_count (int) — Anzahl der eindeutigen Nutzer mit diesem Mitgliedschaftstyp • total_visits (int) — Gesamtzahl der Besuche der Nutzer mit dieser Mitgliedschaft • user_share (numeric) — Anteil der Nutzer in Prozent an der Gesamtzahl (auf eine Dezimalstelle gerundet) Das Ergebnis wird nach Mitgliedschaftstyp in alphabetischer Reihenfolge sortiert.
sobes.tech KI
Antwort von 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;