10/12滴滴数分(北京)最后一批次笔试
20个行测客观题,10个数分客观题,2个SQL编程。
一、行测客观题
图形题,言语理解题,数学计算题,成语填空题。
二、数分客观题
1、环比增长率 =(本月营业额 - 上月营业额)÷ 上月营业额 × 100%。
2、考察条件概率;
3、问哪个门店营业额相对最稳定?计算各门店营业额的标准差(标准差越小,营业额越稳定)。
4、求数学期望,也就是计算平均值。
5、考第三四分位数,(Q3,即 75% 分位数);
6、考皮尔逊相关系数。
7-10、材料分析题
三、SQL
1、题目描述:滴滴国际化正在搭建一个用户活跃度的画像,其中新用户留存是关键的特征,请用SQL实现:2024年6月的新用户数在24年7月的留存率。
WITH UserFirstMonth AS ( -- 计算每个用户的首次交易月份 SELECT passenger_id, DATE_FORMAT(MIN(dt), '%Y-%m') AS first_month FROM order_base GROUP BY passenger_id ), JuneNewUsers AS ( -- 筛选2024年6月的新用户数量 SELECT first_month, COUNT(DISTINCT passenger_id) AS first_num FROM UserFirstMonth WHERE first_month = '2024-06' GROUP BY first_month ), JulyRetention AS ( -- 筛选6月新用户在7月的留存数量 SELECT '2024-07' AS retention_month, COUNT(DISTINCT ob.passenger_id) AS retention_num FROM order_base ob JOIN UserFirstMonth ufm ON ob.passenger_id = ufm.passenger_id WHERE ufm.first_month = '2024-06' AND DATE_FORMAT(ob.dt, '%Y-%m') = '2024-07' ) -- 计算留存率 SELECT jnu.first_month, jr.retention_month, jnu.first_num, jr.retention_num, ROUND(jr.retention_num / jnu.first_num, 3) AS retention_rate FROM JuneNewUsers jnu CROSS JOIN JulyRetention jr;
2、题目描述:滴滴国际化正在搭建一个用户活跃度的画像,其中新用户留存是关键的特征,再知道了6月的次日留存率之后,业务想要了解这批新用户在不同阶段的留存率,以观察不同月份的拉新质量,请用SQL实现:2024年每个月的新用户数,滚动三个月的留存率。
例如,2024年1月的用户,在2024年2月,3月,4月的留存率。
WITH UserFirstMonth AS ( -- 确定每个用户的首次交易月份(仅2024年) SELECT passenger_id, DATE_FORMAT(MIN(dt), '%Y-%m') AS first_month FROM order_base WHERE DATE_FORMAT(dt, '%Y') = '2024' GROUP BY passenger_id ), NewUsersByMonth AS ( -- 统计每月新用户数 SELECT first_month, COUNT(DISTINCT passenger_id) AS first_num FROM UserFirstMonth GROUP BY first_month ), M1Retention AS ( -- 计算M+1月留存用户数 SELECT ufm.first_month, COUNT(DISTINCT ufm.passenger_id) AS m1_retention_num FROM UserFirstMonth ufm JOIN order_base ob ON ufm.passenger_id = ob.passenger_id WHERE DATE_FORMAT(ob.dt, '%Y-%m') = DATE_FORMAT(DATE_ADD(STR_TO_DATE(ufm.first_month, '%Y-%m'), INTERVAL 1 MONTH), '%Y-%m') GROUP BY ufm.first_month ), M2Retention AS ( -- 计算M+2月留存用户数 SELECT ufm.first_month, COUNT(DISTINCT ufm.passenger_id) AS m2_retention_num FROM UserFirstMonth ufm JOIN order_base ob ON ufm.passenger_id = ob.passenger_id WHERE DATE_FORMAT(ob.dt, '%Y-%m') = DATE_FORMAT(DATE_ADD(STR_TO_DATE(ufm.first_month, '%Y-%m'), INTERVAL 2 MONTH), '%Y-%m') GROUP BY ufm.first_month ), M3Retention AS ( -- 计算M+3月留存用户数 SELECT ufm.first_month, COUNT(DISTINCT ufm.passenger_id) AS m3_retention_num FROM UserFirstMonth ufm JOIN order_base ob ON ufm.passenger_id = ob.passenger_id WHERE DATE_FORMAT(ob.dt, '%Y-%m') = DATE_FORMAT(DATE_ADD(STR_TO_DATE(ufm.first_month, '%Y-%m'), INTERVAL 3 MONTH), '%Y-%m') GROUP BY ufm.first_month ) -- 关联计算留存率并输出 SELECT num.first_month, num.first_num, ROUND(IFNULL(m1.m1_retention_num / num.first_num, 0), 3) AS m1_retention_rate, ROUND(IFNULL(m2.m2_retention_num / num.first_num, 0), 3) AS m2_retention_rate, ROUND(IFNULL(m3.m3_retention_num / num.first_num, 0), 3) AS m3_retention_rate FROM NewUsersByMonth num LEFT JOIN M1Retention m1 ON num.first_month = m1.first_month LEFT JOIN M2Retention m2 ON num.first_month = m2.first_month LEFT JOIN M3Retention m3 ON num.first_month = m3.first_month ORDER BY num.first_month;