您的位置:首页 >生活 >

力扣SQL 601题技巧备忘-焦点报道

2023-06-18 18:10:43 来源:哔哩哔哩

此类题在实际业务(计算用户留存率指标之类的)中较为常见,也比较经典,但通过率不到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语句查表找出凶手,幼儿园级的难度,就是表较为多,建议搞个思维导图

标签: