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;

全部评论

相关推荐

昨天 13:49
南京大学 财务
点赞 评论 收藏
分享
09-25 12:00
门头沟学院 Java
我请问呢
投递上海得物信息集团有限公司等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务