Junior
Fitness kulüplerine ziyaret sıklığı analizi Bir fitness kulübü ağında analist olarak çalışıyorsunuz. Kullanıcı ziyaretleri ve satın aldıkları üyelikler hakkında bilginiz var. Üyeliklerin kullanım etkinliğini analiz etmeniz gerekiyor. Her üyelik türü için hesaplayın: • Bu üyelik türünü kullanan toplam kullanıcı sayısı. Sadece benzersiz user_id'leri dikkate alın; • Bu üyelikle yapılan toplam ziyaret sayısı. Bu üyelikle ilgili tüm kullanıcı ziyaretlerini dikkate alın; • Bu üyelik türündeki kullanıcıların toplam kullanıcı sayısına oranı yüzde olarak (bir ondalık basamağına yuvarlanmış). Oranı hesaplamak için, bu üyelik türüne sahip kullanıcı sayısını toplam benzersiz kullanıcı sayısına bölün. Her kullanıcı sadece bir üyeliğe sahip olabilir. Sonucu üyelik türüne göre alfabetik sırayla sıralayın. Giriş formatı Memberships tablosu: • membership_id (int) — üyelik benzersiz kimliği • user_id (int) — kullanıcının benzersiz kimliği • membership_type (text) — üyelik türü Visits tablosu: • visit_id (int) — ziyaretin benzersiz kimliği • user_id (int) — kullanıcının kimliği • visit_date (timestamp) — ziyaret tarihi ve saati Verilerde boş veya hatalı değer yoktur. Çıkış formatı Sorgu, aşağıdaki alanları sıralı şekilde içeren bir tablo döndürmelidir: • membership_type (text) — üyelik türü • users_count (int) — bu üyelik türüne sahip benzersiz kullanıcı sayısı • total_visits (int) — bu üyelik türündeki kullanıcıların toplam ziyaret sayısı • user_share (numeric) — bu üyelik türündeki kullanıcıların toplam kullanıcı sayısına oranı yüzde olarak, bir ondalık basamağına yuvarlanmış. Sonuç, üyelik türüne göre alfabetik sırayla sıralanmalıdır.
sobes.tech yapay zeka
AI'dan gelen yanıt
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;