查找表中值的最大连续出现次数
Posted
技术标签:
【中文标题】查找表中值的最大连续出现次数【英文标题】:Find the Biggest Number of Consecutive Occurrence of values in Table 【发布时间】:2021-04-02 13:08:49 【问题描述】:我有下表
create table Launches (Id int, Name char)
insert into Launches values
(1, 'A'),
(2, 'A'),
(3, 'B'),
(4, 'B'),
(5, 'B'),
(6, 'B'),
(7, 'C'),
(8, 'B'),
(9, 'B')
结果应该是
4 - B
从 3 到 6
类似的问题-
Count Number of Consecutive Occurrence of values in Table
【问题讨论】:
你试过什么?你在哪里卡住了?请向我们展示您的研究和尝试。 你链接的问题告诉你怎么做? 不是因为它没有报告最大连续序列的开始和结束位置。在我的现实生活中,字母“B”在很多地方重复了很多次,没有索引我无法定位最大的序列。 【参考方案1】:您可以为每个name
减去一个枚举值,以获得相同的相邻值的常数。剩下的就是聚合:
select top (1) name, count(*), min(id), max(id)
from (select l.*,
row_number() over (partition by name order by id) as seqnum
from #Launches l
) l
group by (id - seqnum), name
order by count(*) desc;
Here 是一个 dbfiddle。
【讨论】:
这是一个很棒的脚本!然而对我来说,知道第一个和最后一个索引同样重要——在这个例子中是 3 和 6 @JoeJobs 。 . .只需将其包含在select
中即可。
我真的不知道该怎么做
@JoeJobs Gordan 已经为您完成了 - 检查他的编辑。但是,听起来您可能会从查看一些 SQL 教程和学习基础知识中受益更多,因为肯定有人会在这里回答您的问题,但您不会获得自己这样做的技能。
@JoeJobs 。 . .我不明白。该问题使用#Launches
。小提琴中的代码略有不同,但在查询中更改表名确实不难。以上是关于查找表中值的最大连续出现次数的主要内容,如果未能解决你的问题,请参考以下文章