查找连续周人员出现在表中

Posted

技术标签:

【中文标题】查找连续周人员出现在表中【英文标题】:Finding consecutive weeks person appears in table 【发布时间】:2016-11-30 20:32:00 【问题描述】:

我需要找出一个人从当前周开始连续出现在表格中的周数。

该表有一个 ID 和一个插入日期。如果一个人被插入到表中,我需要计算他们前一周是否在那里,如果是,那么在此之前连续几周。

我尝试了一些我搜索过的间隙岛技术,但无济于事。有什么想法吗?

编辑 SQL Server 2012

ID-PK (int)
PersonID (int)
CourseNumber (varchar(15))
Term (char(5))
InsertDate (datetime)

Sample Data
250029 - 507 - 541 - Q2 - 2016-11-27
250028 - 507 - 541 - Q2 - 2016-11-20
250027 - 507 - 541 - Q2 - 2016-11-13
250027 - 507 - 541 - Q2 - 2016-10-13

因此,在包含此数据的示例中,我想检索“3”作为答案,因为该人在 2016 年 10 月 13 日和 2016 年 11 月 13 日之间的休息时间之前连续三周出现在表格中。

谢谢

【问题讨论】:

几个项目。 1) 哪些 RDMS 2) 样本数据和期望的结果会有所帮助 【参考方案1】:

可能的方法是添加按 WeekNumber 和 PersonName 分区的 RowID (https://msdn.microsoft.com/en-us/library/ms186734.aspx)。

然后将结果连接回它自己的位置,其中 PersonName = PersonName 和 RID = RID + 1。然后按 PersonName 计算结果。

这将为连续工作几周但不超过 2 周的人提供答案。需要数据才能获得完整工作的脚本。

【讨论】:

以上是关于查找连续周人员出现在表中的主要内容,如果未能解决你的问题,请参考以下文章

从 DB 表中查找非连续的原始值 - SQL

SQL查找连续出现的数字

检查SQL中的表中是不是连续出现两个不同的值?

查找表中值的最大连续出现次数

2022-11-25:连续出现的数字。编写一个 SQL 查询,查找所有至少连续出现三次的数字。 答案是输出1,原因是1是唯一连续出现三次的数字。 DROP TABLE IF EXISTS logs;

LeetCode--SQL 查询:查找所有至少连续出现三次的数字。