Sobes.tech
Junior

Фитнес клубдарга бару анализи Сиз фитнес клубдар тармагында аналитик болуп иштейсиз. Сизде колдонуучулардын баруусу жана алар сатып алган абонементтер тууралуу маалымат бар. Абонементтердин эффективдүүлүгүн анализдөө керек. Ар бир абонемент түрү үчүн: • бул абонемент түрүн колдонгон уникалдуу user_idлердин жалпы саны; • бул абонемент менен жасалган жалпы баруулар саны. Бардык барууларды эске алыңыз; • бул абонемент менен барган колдонуучулардын бөлүштүрүү пайызы. Бул үчүн, бул абонемент менен барган колдонуучулардын санын жалпы уникалдуу колдонуучулардын санына бөлүңүз жана пайызда көрсөтүңүз (бир ондукка жакындатылган). Ар бир колдонуучу бир гана абонементке ээ болушу мүмкүн. Натыйжаны абонемент түрү боюнча алфавиттик тартипте сорттогуңуз. Кирүү форматы Абонементтер таблицасы: • membership_id (int) — абонементтин уникалдуу идентификатору • user_id (int) — колдонуучунун уникалдуу идентификатору • membership_type (text) — абонементтин түрү Бардык маалыматтар бош же катаал маанилерди камтыбайт. Чыгуу форматы Суроо төмөнкүдөй тартипте талаалар менен таблицаны кайтаруусу керек: • membership_type (text) — абонементтин түрү • users_count (int) — бул түрдөгү уникалдуу колдонуучулардын саны • total_visits (int) — бул абонемент менен жасалган баруулардын жалпы саны • user_share (numeric) — бул абонемент менен барган колдонуучулардын пайызы, жалпы колдонуучулардын санына карата (бир ондукка жакындатылган) Натыйжаны абонемент түрү боюнча алфавиттик тартипте сорттогуңуз.

sobes.tech AI

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;