Junior
73
Анализа посећености фитнес клубова Радите као аналитичар у мрежи фитнес клубова. Имате информације о посећености корисника и купљеним претплатама. Потребно је анализирати ефикасност коришћења претплата. Израчунајте за сваки тип претплате: • укупни број корисника који су користили овај тип претплате. Узимајте у обзир само јединствене user_id; • укупни број посета са овом претплатом. Узимајте у обзир све посете корисника са том претплатом; • удел корисника ове претплате у процентима од укупног броја корисника (заокружено на један знак после запетое). За израчунавање удела користите однос броја корисника са овом претплатом и укупног броја јединствених корисника. Сваки корисник може имати само једну претплату. Распоредите резултат по типу претплате по абецедном реду. Формат улаза Табела memberships: • membership_id (int) — јединствени идентификатор претплате • user_id (int) — јединствени идентификатор корисника • membership_type (text) — тип претплате Табела visits: • visit_id (int) — јединствени идентификатор посете • user_id (int) — идентификатор корисника • visit_date (timestamp) — датум и време посете Подаци не садрже празне или неисправне вредности. Формат излаза Захтев треба да врати табелу са пољима у овом редоследу: • membership_type (text) — тип претплате • users_count (int) — број јединствених корисника са овим типом претплате • total_visits (int) — укупни број посета корисника са овом претплатом • user_share (numeric) — учешће корисника у процентима са овом претплатом од укупног броја (заокружено на 1 знак после запетое) Резултат се сортира по типу претплате по абецедном реду.
Компаније где су питане
01.tech
Одговор од АИ
sobes.tech АИ
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;