求助一道sql题目

编写一个 SQL 查询,查找所有数字最大连续次数,以及对应的最小id和最大id。

+----+-----+
| Id | Num |
+----+-----+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 1 |
| 6 | 2 |
| 7 | 2 |
+----+-----+
例如,给定上面的 Logs 表, 1 是唯一连续出现至少三次的数字。

+-----------------------------------+
| Num | Continuation | Min | Max|
+-----------------------------+
| 1 | 3 | 1 | 3|
+-----------------------------+
| 2 | 2| 6 | 7|
+---------------------------------+

这一题我只想到这样解,求大佬教教我怎么做呜呜。
select Num,
max(Cnt) as Continuation
from (select Id,Num,
row_number() over() as Cnt
from Logs) as temp
group by Num
;

#笔试题目#
全部评论
SELECT f.num, f.cir Continuation, f.MIN, f.max FROM ( SELECT num,cir,MIN,MAX FROM  ( SELECT  num,  MIN(id) AS MIN, MAX(id) AS MAX, COUNT(ir) AS cir FROM  (SELECT num, rnk, id, (id - rnk) AS ir FROM ( SELECT id, num, row_number() over(partition BY num order by id) AS rnk FROM dev.dev_zsz_lianxi ) a ) b GROUP BY num, ir ) c ) f JOIN ( SELECT num, MAX(cir) Continuation FROM ( SELECT num, COUNT(ir) AS cir FROM ( SELECT num, rnk, id, (id - rnk) AS ir FROM ( SELECT id, num, row_number() over(partition BY num order by id) AS rnk FROM dev.dev_zsz_lianxi ) a ) b GROUP BY num, ir ) c GROUP BY num ) h ON f.num = h.num AND f.cir = h.Continuation 貌似很麻烦的样子。。。
点赞
送花
回复 分享
发布于 2020-09-19 15:20

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务