此类题在实际业务(计算用户留存率指标之类的)中较为常见,也比较经典,但通过率不到50%,官方题解蛮离谱使劲join,有人写笛卡尔积来解(大数据怕不是直接把服务器干冒烟)
本人SQL很久很久没打了,最近又捡起来,实话说能力只能说是地板级,代码见笑
以下是题目
(资料图片)
核心思想
一般这类求连续的题目都需要构造出等差数列才好做,当然你分类做也行,只是没那么好做
举个例子:
找连续就要构造等差序列,那么可以这样构造(业务上这么构造不太好):
上图可以看出来,如果c列日期连续的话,日期差值是相等的,即9-10连续两天,12-13连续三天,16独一天,以此类推。
回到本题
1.先筛选出人数大于等于100的行,再作等差
2.做差找连续(实际1、2步可以写一起,分开写容易看效果)
3.数做差的数字出现几次相同(注意差值只会连续出现,不会后面再次出现)
直接开窗造他就完了
4.再直接where一下就出来了,力扣本题要求按顺序就再order by一下就完事了
效率嘛……
如果关键字全大写还能提升一点点效率,也就一丝丝
结尾推荐
https://mystery.knightlab.com/
一个练sql的小游戏,用sql语句查表找出凶手,幼儿园级的难度,就是表较为多,建议搞个思维导图
标签: