JobHoppoer-SQL-180. Consecutive Numbers

挺有意思的一道题,通过 某一 column 上下相邻 row 之间的关系,衍生出另一个行,所以要用到 UDF 类似的东西。

思路跟 Rank 那题类似:JobHoppoer-SQL-178. Rank Scores_SpartanLaser的博客-CSDN博客

考点:

- 定义变量: 在 From 后进行 定义和初始化

- SQL 中 条件语句的写法

- 每经过一行就要对遍历 进行 更新,这里唯一需要 tracking的变量就是 previousNum.

SQL 代码,我也是写了一会的,没有参考讨论区答案,但是我感觉自己的方法是 复杂度 低的,不涉及任何 join

评论区有 一些答案中出现了 built-in analytics function, eg: LEAD(), LAG(), <-- TODO.

# Write your MySQL query statement below

-- Need to have CASE clause for condition checking.

SELECT DISTINCT num as ConsecutiveNums FROM 
	(SELECT id, num, 
		@consCnt:= CASE 
        WHEN num=@prevNum THEN @consCnt+1 
        ELSE 1 END AS consCnt, 
        @prevNum:=num FROM Logs, (SELECT @prevNum:=1, @consCnt:=0) AS Init) AS logsWithConsCnt
WHERE consCnt >=3;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值