会员登录|免费注册|忘记密码|管理入口 返回主站||保存桌面
大厂面试sql手撕题目总结
2024-11-20IP属地 湖北2

大厂面试sql手撕题目总结

常用日期函数

 
 
 
 

行转列的常规做法是,group by+sum(if())【或count(if())】

问题描述大厂面试sql手撕题目总结 代码实现

 
 

问题描述: 大厂面试sql手撕题目总结 代码实现

大厂面试sql手撕题目总结 sql实现

 
 

大厂面试sql手撕题目总结

  • 代码
 
  • 结果大厂面试sql手撕题目总结

分析

大厂面试sql手撕题目总结 sql实现

 
 
  • 题目: 2021年11月每天新用户的次日留存率
  • 思路
    • 先查询出每个用户第一次登陆时间(最小登陆时间)–每天新用户表
    • 因为涉及到跨天活跃,所以要进行并集操作,将登录时间和登出时间取并集,这里union会去重–用户活跃表
    • 将每天新用户表和用户活跃表左连接,只有是同一用户并且该用户第2天依旧登陆才会保留整个记录,否则右表记录为空
    • 得到每天新用户第二天是否登陆表后,开始计算每天的次日留存率:根据日期分组计算,次日活跃用户个数/当天新用户个数
  • 代码
 
 

需求常见词:【每组xxx的第一个yyy的zzz】【每组xxx的最后一个】

【每组xxx的前n个】【每组最xx的前n个】

公式:row_number() over(partition by 组名) as rn,再筛选rn<=N名

大厂面试sql手撕题目总结 大厂面试sql手撕题目总结 sql代码

 
 
 
  • 题目
 
  • 代码
 
 
 

每类视频近一个月的转发量/率

 
 
  • 题目: 有一张用户余额表dwd_fnd_bal_usr_dd, 包含user_id(用户id)、bal(当前余额)以及dt(日期) 问题:请补全所有用户的缺失余额
 
  • 答案解析 大厂面试sql手撕题目总结
 
 
 

使用 和 子句 使用 将表A和表B连接起来,然后使用 子句筛选出那些在表B中没有对应记录的行。

 
 
 

在使用group by的语句中,select 后面只能跟group by字段和聚合函数。

可以用在select后面去重 也可以用在聚合函数里,用于某个字段中的数据去重计算

 
  1. 解释

    这条SQL语句的作用是从两个表 和 中根据 字段进行内连接(JOIN,并选择所有列的数据。 表示 是连接条件,且在 和 表中都存在。

  2. 详细说明

    • JOIN 类型:默认情况下, 是 ,即只返回在 和 表中都有匹配 的行。
    • USING 子句: 指定了连接的字段 ,这意味着
      • 返回的结果集包含 一次。
      • 在结果集中不会重复,因为它在 和 表中都存在,并且是连接条件。
  3. 注意事项

    • 字段冲突:如果连接的字段在两个表中名称不同,则不能使用 ,而需要使用 子句
    • 连接类型:如果需要包括不匹配的行,可以使用 或 等。