Junior
Fitness klublarına ziyarətlərin analizi Siz fitness klublarının şəbəkəsində analitiksiniz. İstifadəçilərin ziyarətləri və onların aldığı abunəliklər haqqında məlumatınız var. Abunəliklərin istifadəsinin effektivliyini təhlil etmək lazımdır. Hər abunəlik növü üçün hesablayın: • Bu abunəlik növünü istifadə edən ümumi istifadəçi sayı. Yalnız unikal user_id-ləri nəzərə alın; • Bu abunəliklə edilən ümumi ziyarət sayı. Bu abunəliklə əlaqəli bütün istifadəçi ziyarətlərini nəzərə alın; • Bu abunəlik növündəki istifadəçilərin ümumi istifadəçi sayına nisbəti faizlə (bir ondalıq dəqiqliklə). Hesablama üçün, bu abunəlik növünə malik istifadəçi sayını ümumi unikal istifadəçi sayına bölün. Hər istifadəçi yalnız bir abunəyə sahib ola bilər. Nəticəni abunəlik növünə görə əlifba sırasına görə sıralayın. Giriş formatı Memberships cədvəli: • membership_id (int) — unikal abunəlik identifikatoru • user_id (int) — istifadəçi identifikatoru • membership_type (text) — abunəlik növü Visits cədvəli: • visit_id (int) — unikal ziyarət identifikatoru • user_id (int) — istifadəçi identifikatoru • visit_date (timestamp) — ziyarət tarixi və saatı Məlumatlar boş və ya düzgün olmayan dəyərlər içermir. Çıxış formatı Sorğu aşağıdakı sahələri sıralı şəkildə ehtiva edən cədvəl qaytarmalıdır: • membership_type (text) — abunəlik növü • users_count (int) — bu abunəlik növünə malik unikal istifadəçi sayı • total_visits (int) — bu abunəliklə əlaqəli istifadəçilərin ümumi ziyarət sayı • user_share (numeric) — bu abunəlik növünə malik istifadəçilərin ümumi istifadəçi sayına nisbəti faizlə, bir ondalıq dəqiqliklə, yuvarlaqlaşdırılmış. Nəticə abunəlik növünə görə əlifba sırasına görə sıralanır.
sobes.tech Süni İntellekt
AI-dan cavab
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;