点击关注公众号,SQL干货及时获取
后台回复:1024,获取500G视频教程
往期热文
钱比命重要,拼夕夕员工反对双休。。。
牛逼,OpenAI新模型 o1 国内直接连!
《SQL145题第2版》正式发布!
大家好,我是岳哥。
今天看到一个关于拼多多的帖子,说是拼多多的神秘与保密超乎你的想象,主要有以下几点:
上海总部外无任何拼多多公司标识。其他城市的办公点,也无工牌无标识,你根本不知道拼多多就在这个写字楼里面。
从不参加互联网业内的所有分享会议,包括技术和管理。
无任何对外开源技术项目。
高管从不公开与外部公司高管进行接触。
内部通讯工具看不到员工的岗位,部门。且任何部门的组织架构都看不到。
从不公布任何大促活动的销量战绩。
评论区有内部员工说是因为经常有商家上门维权才这么低调,怕被商家打,平时下楼都不敢戴工牌。
这个可信度很高,之前拼多多的海外品牌Temu广州总部,就有不少商家上门维权,这么说来,拼多多的低调和神秘就说得通了。
下面给大家分享一道拼多多的面试题
题目:求解最大连续支付失败的次数
有一张支付流水表pay,字段如下
求每个用户的最大连续支付失败次数
输出字段:uid,cnt(失败次数)
解题思路
这是一个连续性问题,连续性问题通常是创造一个自增长的虚列,来和目标判断是否连续的列相比较。是解决连续性问题的常见思路。
比如题目中,需要时间连续的某人最大的支付失败数量,那么就需要按照时间排序了,那么如何判断时间连续,题目中并没有规定时间的出现频次,所以直接和时间来做比较判断连续并不是一个好的解决办法。
这里其实最简单的就是生成两次行号了。
具体步骤
1.按照用户编号开窗,按照时间排序,增加行号,这样就得到了每个用户按照时间排序的订单序号。
2.筛选掉支付订单成功的,再根据用户编号开窗,按照时间排序,增加行号,这样就得到了每个用户按照时间排序的失败的订单的序号。
3.两个序号相减,相等的数字则表示连续。
4.按照用户和得到的数字分组,或者最大的组,就是最大的连续支付失败的订单数量。
参考答案
WITH Customer AS(
SELECT p1.*,
p1.rowNumber - RANK() over(PARTITION by p1.uid ORDER BY p1.time) as diff
FROM (
SELECT *,RANK() over(PARTITION by uid ORDER BY time) as rowNumber
FROM pay
) p1 WHERE p1.status = 'fail'
),
CustomerCounts AS(
SELECT uid,count(1) as times
FROM Customer GROUP BY uid,diff
)
SELECT uid,max(times) as cnt
FROM CustomerCounts GROUP BY uid
给大家推荐一下我们的GPT 4.0/4o/o1 preview系统,
一次性买了200多个Plus会员放在这个系统的池子里,
无需梯子即可直连,费用还比官网便宜一半,包售后。
每月仅需88元!
扫码加我微信购买,备注:GPT
每天仅需一瓶可乐钱