大厂SQL面试题,连续时间问题

本文聚焦SQL面试中常见的连续时间问题,提供了解题的三步策略:排序、计算差值和统计最多次数。通过实例分析和面试真题,帮助读者掌握处理连续时间问题的技巧。
摘要由CSDN通过智能技术生成

今天分享一个非常常考,同时也不太容易的sql题目类型,求连续时间问题。

这类题的核心是:分组排序,用时间减去排序,如果连续的话他们的差会是相同值
记住下面的表,按照提供的三步思路理清楚里面的数据逻辑,连续时间问题再不会难到你

思路:
求解连续天数是面试时非常常考的问题,这类问题有非常巧妙的统一解法,分为3步:

1、为日期排序

  • row number() over (partition by use_id order by date) as rank

2、求日期和排序的差值(diff)

  • 因为日期存在周期,会存在跨月、跨年的情况,故使用datediff最保险
    date_diff(date, rank) as diff

3、求diff出现最多的次数

  • max(count(diff))

面试真题:

表1:audit_log
在这里插入图片描述
表2:staff_info
在这里插入图片描述
表3:category_dict
在这里插入图片描述
题目:
1)查询近一周分天各部门员工审核量、审核业务类型量、审核来源量,并按日期升序、审核量降序排列
2)查询近7天平均审核时长大于200s的部门中平均审核时长大于400的员工信息(审核时长=审核完成时间-开始审核时间)
3)查询各业务类型中,审核量Top3的员工姓名、员工部门,以及相应的审核通过占比
4)查询连续审核大于等于3天的员工信息:部门、姓名、id

-- 1)查询近一周分天各部门员工审核量、审核业务类型量、审核来源量,并按日期升序、审核量降序排列
select date(FROM_UNIXTIME(start_time)) 日期, 
audito_staf_id,
count(
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值