#P5178. 第2题-拼团活动成团统计
-
1000ms
Tried: 0
Accepted: 0
Difficulty: 5
所属公司 :
拼多多
时间 :2026年7月19日
第2题-拼团活动成团统计
No testdata at current.
解题思路
核心算法
使用分组聚合算法和条件聚合算法,分为两层统计。
第一层以团 ID 分组,统计每个团的去重参团人数和支付总金额。若参团人数大于等于活动的成团门槛,则该团为成功团。
第二层以活动 ID 分组,统计:
题目内容
某电商平台推出拼团玩法:团长发起拼团后,需凑满活动规定的门槛人数才算成团;若未凑满则拼团失败,平台将退还所有参与用户的支付金额。每个团 ID 唯一标识一次发团,且仅归属于一个活动。运营团队需要复盘近期各拼团活动的成团效果,找出转化最好的活动以加大曝光。请统计每个拼团活动的成团率及成团支付总金额,仅输出成团率大于 0 的活动,取前 5 名。
输入描述
表名:group_buy_activity — 拼团活动表(全量活动),包含字段:活动ID、活动名称、成团门槛人数 表名:group_info — 团信息表,包含字段:团 ID、活动 ID 表名:group_record — 参团记录表,包含字段:参团记录 ID、团 ID、用户 ID、支付金额
表的字段类型和约束请参考示例中的建表语句。
输出描述
输出成团率大于 0 的前 5 名拼团活动,包括活动 ID、活动名称、发起团数、成团团数、成团率、成团支付总金额。发起团数为该活动下发起的独立团数量(按团 ID 去重)。成团团数为参团人数达到门槛的团数(按用户 ID 去重计数)。成团率=成团团数/发起团数,四舍五入保留 2 位小数。成团支付总金额仅累加成功成团的团的支付金额(失败团已退款不计入)。按成团率从高到低排序,成团率相同的按活动 ID 升序排列。成团门槛及成团判定的具体含义请参考示例的输出及说明。
补充说明
ROUND(数值,小数位数) 用于对数值按指定小数位数进行四舍五入,第一个参数为要处理的数值,第二个参数为保留的小数位数。
样例1
输入
DROP TABLE IF EXISTS group_record;
DROP TABLE IF EXISTS group_info;
DROP TABLE IF EXISTS group_buy_activity;
CREATE TABLE group_buy_activity (
activity_id VARCHAR(20) PRIMARY KEY,
activity_name VARCHAR(50),
threshold_people INT
);
CREATE TABLE group_info (
group_id VARCHAR(20) PRIMARY KEY,
activity_id VARCHAR(20)
);
CREATE TABLE group_record (
record_id VARCHAR(20) PRIMARY KEY,
group_id VARCHAR(20),
user_id VARCHAR(20),
pay_amount DECIMAL(10,2),
UNIQUE KEY uk_group_user (group_id, user_id)
);
INSERT INTO group_buy_activity VALUES
('A001','满减拼团',3),
('A002','家电拼团',2),
('A003','美食拼团',5);
INSERT INTO group_info VALUES
('G001','A001'),
('G002','A001'),
('G003','A002'),
('G004','A002'),
('G005','A003');
INSERT INTO group_record VALUES
('R001','G001','U01',30.00),
('R002','G001','U02',30.00),
('R003','G001','U03',30.00),
('R004','G002','U04',20.00),
('R005','G002','U05',20.00),
('R006','G003','U06',100.00),
('R007','G003','U07',100.00),
('R008','G004','U08',50.00),
('R009','G004','U09',50.00),
('R010','G005','U10',10.00);
输出
activity_id|activity_name|launched_group_cnt|success_group_cnt|success_rate|success_pay_amount
A002|家电拼团|2|2|1.00|300.00
A001|满减拼团|2|1|0.50|90.00
说明
说明
场景1: 团G001有3人参团(U01、U02、U03),活动A001门槛3人,3人达到门槛,成团成功,支付金额90元 场景2: 团G002有2人参团(U04、U05),活动A001门槛3人,2人不满3人门槛,成团失败,退款,支付金额不计入 场景3: 团G003有2人参团(U06、U07),活动A002门槛2人,2人达到门槛,成团成功,支付金额200元 场景4: 团G004有2人参团(U08、U09),活动A002门槛2人,2人达到门槛,成团成功,支付金额100元 场景5: 团G005有1人参团(U10),活动A003门槛5人,1人不满5人门槛,成团失败,退款,支付金额不计入
输出1: 活动A001下有2个团(G001成团、G002失败),发起2团/成团1团/成团率0.50/成团支付金额90元 输出2: 活动A002下有2个团(G003成团、G004成团),发起2团/成团2团/成团率1.00/成团支付金额300元(200元+100元累加) 输出3: 活动A003下1个团全部失败,成团率为0,不输出