校招算法笔面试 | SQL笔试面试编程题-计算用户的平均次日留存率

题目## 题目

题目链接

题目描述

运营团队希望查看用户在某天刷题后第二天是否会继续刷题的留存率。具体来说,计算所有用户在某天进行刷题活动后,第二天还进行刷题的用户比例,并求其平均值。需要从 question_practice_detail 表中提取相关数据,最终返回平均留存率 avg_ret,结果保留四位小数。

解题思路

要计算用户的留存率,我们需要完成以下步骤:

  1. 确定每个用户每日的刷题记录

    • 首先,获取每个用户在每个日期的刷题记录,确保每个用户每天只被计算一次。
  2. 判断用户次日是否有刷题记录

    • 对于每个用户在某一天的刷题记录,检查用户在次日是否有刷题行为。如果有,则认为该用户在次日有留存。
  3. 计算留存率

    • 留存率的计算公式为:
      $
      \text{留存率} = \frac{\text{有次日刷题记录的用户总数}}{\text{总用户刷题记录数}}
      $
    • 最终结果保留四位小数。

SQL 查询

SELECT 
    ROUND(
        SUM(CASE WHEN p2.device_id IS NOT NULL THEN 1 ELSE 0 END) / COUNT(*) , 
        4
    ) AS avg_ret
FROM 
    (SELECT DISTINCT device_id, date FROM question_practice_detail) p1
LEFT JOIN 
    (SELECT DISTINCT device_id, date FROM question_practice_detail) p2
ON 
    p1.device_id = p2.device_id 
    AND p2.date = DATE_ADD(p1.date, INTERVAL 1 DAY);

代码解释

  • 子查询 p1p2

    • p1:提取每个用户每天的唯一刷题记录。
    • p2:同样提取每个用户每天的唯一刷题记录,用于与 p1 进行自连接。
  • LEFT JOIN 连接条件

    • 连接条件为同一 device_idp2.datep1.date 的次日(即 p1.date 加一天)。
    • 通过这种方式,可以判断用户在某天刷题后次日是否有刷题记录。
  • SUM(CASE WHEN p2.device_id IS NOT NULL THEN 1 ELSE 0 END)

    • 统计有次日刷题记录的用户数量。如果 p2.device_id 不为空,说明用户在次日有刷题行为,计数加1。
  • COUNT(*)

    • 统计总的刷题记录数,即总的 (device_id, date) 组合数量。
  • ROUND(..., 4)

    • 将留存率结果保留四位小数。

题目链接

题目描述

运营团队希望计算出 2021年8月 每天用户练习题目的数量。需从 question_practice_detail 表中提取相关数据,并按照日期统计每天的题目数量。

解题思路

  • 我们需要从 question_practice_detail 表中筛选出 2021年8月 的数据。

  • 提取日期中的日(day)部分,并统计每一天的题目数量(question_cnt)。

  • 注意事项

    • 确保日期的范围仅限于 2021年8月,避免包含其他月份的数据。
    • 使用 GROUP BY 进行分组统计时,需要基于提取的 day

SQL 查询

-- 统计2021年8月每天的用户练习题目数量
SELECT 
    DAY(date) AS day,                  -- 提取日期中的日部分
    COUNT(*) AS question_cnt            -- 统计每个日的题目数量
FROM 
    question_practice_detail
WHERE 
    date >= '2021-08-01' AND date < '2021-09-01'  -- 过滤出2021年8月的数据
GROUP BY 
    day                                -- 按日进行分组

### 游戏运营相关的笔试题目 在IT领域中,游戏运营业务通常涉及数据分析、市场策略制定以及用户体验优化等多个方面。因此,在准备游戏运营相关的笔试时,考生应重点关注以下几个方向: #### 一、数据分析能力 数据分析是游戏运营的核心技能之一,常见的考试内容可能包括但不限于以下几点: - **VLOOKUP函数的应用** 考察候选人是否能够熟练运用Excel中的`VLOOKUP`函数来处理数据表之间的关联查询[^2]。例如,给定两个表格分别记录玩家ID及其充值金额和玩家等级,要求通过`VLOOKUP`计算特定玩家的总充值额。 ```excel =VLOOKUP(A2, B:C, 2, FALSE) ``` - **SQL查询语句编写** 候选人可能会被要求基于数据库设计完成一些简单的SQL查询任务。例如,统计某段时间内的活跃用户数或付费转化率。 ```sql SELECT COUNT(DISTINCT user_id) AS active_users FROM game_logs WHERE log_date BETWEEN '2023-01-01' AND '2023-01-31'; ``` #### 二、市场营销与推广策略 这部分主要测试候选人的逻辑思维能力和对市场的敏感度。以下是几个典型的案例分析类问题: - 如何针对一款新上线的手游策划一次有效的营销活动?请列举至少三种不同的渠道并说明理由。 - 如果发现某一地区的ARPU值(每用户平均收入)远低于其他地区,请提出解决方案,并预测实施后的效果。 #### 三、产品功能评估与改进 此部分旨在检验应聘者对于游戏产品的理解程度以及解决问题的能力。 - 当前版本的游戏存在严重的留存率下降现象,请结合具体指标(如DAU/MAU比例变化趋势图),找出潜在原因并给出改进建议。 - 对于新手引导流程的设计方案进行优劣点评,并尝试重新规划更合理的路径以提升初次体验满意度。 #### 四、综合实战模拟题 某些公司还会设置开放式的项目型考题,让参与者全面展示自己的专业知识和技术水平。比如,“假如你是《王者荣耀》的产品经理,请描述一下未来一年内该作的发展蓝图”。 --- ### 工具推荐 为了更好地备考上述各类试题,建议利用像牛客网这样的在线资源平台获取更多练习机会。作为一个集成了大量高质量算法挑战赛及名企真题演练专区的地方,它非常适合希望提高自身竞争力的技术爱好者们长期坚持打卡学习[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值