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;