Junior
ფიტნეს კლუბების ვიზიტების ანალიზი თქვენ მუშაობთ ფიტნეს კლუბების ქსელში ანალიტიკოსად. გაქვთ ინფორმაცია მომხმარებლების ვიზიტებზე და მათ მიერ შეძენილ აბონემენტებზე. საჭიროა აბონემენტების ეფექტიანობის ანალიზი. გაანგარიშეთ თითოეული აბონემენტის ტიპისთვის: • ამ ტიპის აბონემენტს გამოყენებული უნიკალური user_id-ების საერთო რაოდენობა; • ამ აბონემენტთან დაკავშირებული ვიზიტების საერთო რაოდენობა; • ამ აბონემენტის მომხმარებლების წილი საერთო მომხმარებელთა რაოდენობის პროცენტში (დასკვნითი ერთ ციფრზე). გამოთვლისთვის გამოიყენეთ ამ აბონემენტით გამოყენებული მომხმარებლების რაოდენობა საერთო უნიკალური მომხმარებლების რაოდენობასთან მიმართებაში. ყოველ მომხმარებელს შეიძლება ჰქონდეს მხოლოდ ერთი აბონემენტი. შედეგი sort-ით დაალაგეთ აბონემენტების ტიპის მიხედვით, ალფაბეტურ წესრიგში. შესავალი მონაცემები აბონემენტების სია: • membership_id (int) — უნიკალური აბონემენტის ID • user_id (int) — მომხმარებლის ID • membership_type (text) — აბონემენტის ტიპი ვიზიტების სია: • visit_id (int) — ვიზიტის უნიკალური ID • user_id (int) — მომხმარებლის ID • visit_date (timestamp) — ვიზიტის თარიღი და დრო მონაცემები არ შეიცავს ცარიელ ან არასწორ მნიშვნელობებს. გამოსავალი საკითხი უნდა დააბრუნოს სია, სადაც ფარავენ: • 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;