SQL实际应用篇——面试题

本文介绍了SQL在实际面试中的应用,重点讨论了时间日期处理,包括跨天的最晚登录时间和连续登录天数计算。对于连续登录天数的计算,提出了两种判断逻辑,并给出了具体的SQL实现,帮助读者理解和掌握SQL在业务中的实际应用。
摘要由CSDN通过智能技术生成

总结完SQL的理论知识之后,还是要实际做题落实到应用里去的。

光知道各个部分的理论知识只能写出最简单的SQL,在实际业务中会有很多应用情景,我们要熟练,才能有效率地完成工作。

跟数学一样,知道知识后,还要做题,各种题型,才是真的掌握了。

这是从学到用的一步,需要好好落实。

面试不会只是机械地问你SQL的一些基本概念,而是会出题让你写,问你怎么具体去做。

建议可以去刷牛客网的题或者百度搜一些其他网站或者其他文档的面试题都可以。

 

时间日期的处理

一、跨天的最晚登录时间计算

获取用户每天在21:30-04:30的时间区间里最晚登录的时间

这个问题的重点在于时间跨天了,如果只是一天内的时间段,直接group by然后max(时间)即可。

跨天则没法直接对日期group by,这里我选择的做法是直接把时间-4.5hour,既然是跨天,那我就让它归属于同一天即可。

获得时间后,再加上4.5个hour即可。

这个思路是我在处理海外手游时想到的,打点上他们的时间是没错的,只是推送日报的时候,因为跨时区,我需要延迟时差去推送。

 

二、连续登录天数计算

情况1:求最大的连续登陆天数

选出用户的最长连续登陆天数,比如用户一个月里有连续登陆2天、4天、5天,怎么查询去获得最长的那个连续登陆天数

转化为编程问题就是一个001100011110000111110000000字符串,选出1字符串的最大长度。

考点是连续,连续的条件如何判断,

我选择的判断逻辑是,两个日期的日期间隔+1与实际表中登陆的天数相等,则为连续,如果中间有不登录的日期,则间隔+1不会与实际登陆天数相等。

网上查到的别人的写法,判断逻辑是连续日期与连续开始那天的diff相同,这个方法写起来比较容易一点。

建表:

 

方法一:判断连续日期逻辑为,连续日期中的每一天与连续开始那天的diff相同

参考:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值