问题标签 [gaps-and-islands]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
94 浏览

sql - 排除同一天 drop\adds,同时保留真实的开始和结束日期

我们有一个表格,其中包含产品订阅的状态更新。订阅开始时会向表中插入一条记录,订阅结束时会使用结束日期更新该记录。我们的一个系统(不知道是哪一个)有时会在结束订阅然后再次开始(创建新记录)时执行“同一天删除\添加”。因此,相同的订阅者 ID 附加到多个记录,即使没有真正改变。

示例数据如下:

这家伙从 1/11 开始,到 1/20 结束。记录 2 和 3 由系统输入(同一天删除添加,但不是真的)。记录 4 是 19 先生后来开始的另一个订阅。

我有一些代码将尝试仅解析每个不同订阅的第一条(实际)记录,但如果不使用 max() 并按订阅者分组,它就无法找到真正的结束日期。这当然会显示两个订阅,1/11 - 1/31 和 1/30 - 1/31,这是错误的。

我正在努力将这种模式解决为两个这样的记录:

这是在 Teradata 中,但我相信它只是 ANSI SQL。

0 投票
4 回答
4253 浏览

mysql - 在日期范围内运行总计 - 填写缺失的日期

我有下表。

我如何获得每月总数?结果像 -

类似的 sql 语句

将导致 0111 的 800 但是...

注意没有日期限制。这是我的困境。如何填充此列而不对所有日期进行循环并同时显示缺失的月份?

0 投票
1 回答
458 浏览

sql - 您如何使用 T-SQL 获得符合条件的最大/最大顺序/连续记录

简而言之,我希望创建一个查询,以帮助我找到音乐会类型场地的最佳可用座位,就像 Ticketmaster.com 的“查找最佳可用座位”,其中要求找到最靠近舞台的座位数量并且座位必须按顺序排列。

鉴于此示例表:

并给出这个脚本来填充表格:

找到 x 个连续/连续座位的最佳查询是什么?

以下是我当前的解决方案,我的应用程序至少需要 3 个查询。

例如,如果客户要求 8 个下一个最佳可用座位,我将运行以下查询:

这将产生如下结果集:

应用程序会说“是否有 8 个座位可用,优先级为 1?” 使用上面的结果集,答案是肯定的,所以让我们获取相应部分的可用行数,即第 1 部分。这是查询:

这将产生如下结果集:

应用程序会查看这些结果并从第一排开始询问相同的问题:“A 排有 8 个座位吗?” 有了上面的结果,答案是肯定的,所以那个时候应用程序会用这个查询来查询 A 行的所有座位:

这将产生如下结果集:

那时,应用程序将遍历结果,尝试连续查找 8 个座位,并且 StatusCd 为“A”以表示可用。

我确信有一种更有效的方法可以查询数据库中的顺序记录,而无需加载整行并在代码中执行。

对于最佳解决方案,我最好的猜测是在表上进行自连接,并对 SeatId 进行某种递增或类似的操作。

非常感谢任何帮助或建议。

0 投票
4 回答
6231 浏览

sql - Oracle:选择缺失的日期

我在字段中有一个带有(除其他外)日期的表格。

我需要获取所有日期的列表,这些日期比最旧的日期更近,比最近的日期更早,并且完全从表中丢失。

因此,如果该表包含:

我想要一个返回的查询:

0 投票
5 回答
30207 浏览

sql - SQL 查询显示多个日期范围之间的差距

我正在处理一个 SSRS / SQL 项目并尝试编写一个查询来获取日期之间的差距,我完全不知道如何编写这个。基本上我们有许多可以安排使用的设备,我需要一份报告不使用时显示。

我有一个包含设备 ID、EventStart 和 EventEnd 时间的表,我需要运行查询以获取每个设备的这些事件之间的时间,但我不确定如何执行此操作。

例如:

我的查询结果应该是

此表中平均大约有 4 - 5 个设备,可能有 200 - 300 + 个事件。

更新:

好的,我会更新它以尝试提供更多信息,因为我似乎没有很好地解释这一点(对不起!)

我正在处理的是一个包含事件详细信息的表,每个事件都是飞行模拟器的预订,我们有许多飞行模拟(称为表中的设备),我们正在尝试生成一个 SSRS 报告,其中我们可以给客户显示每个 SIM 卡可用的天数/时间。

所以我将传入一个开始/结束日期参数并选择这些日期之间的所有可用性。结果应显示为:

此外,事件有时可能会重叠,尽管这种情况非常罕见,并且由于数据错误,一个设备上的事件与不同设备上的事件重叠并不重要,因为我需要分别了解每个设备的可用性。

0 投票
2 回答
122 浏览

mysql - MYSQL:连续日期的表更新

大家晚上好

我整天都在和这个搏斗。

我正在尝试更新我的客户表中的一列,该列将显示他们成为订阅者的次数。该表是从一个大数据转储中创建的,该转储中每个客户都有单独的行,并且每个月他们都是订阅者(为每个月分配一个迭代编号)。名字是独一无二的。它看起来像这样,并显示(例如)Jane Doe 是期间 1000 的订户,但不是期间 1002。

在这种情况下,Jane Doe 是 1000-1001 的订阅者,离开了我们的订阅,然后从 1004-1005 回来。我有一个包含所有日期逻辑(开始日期、结束日期、日期代码等)的主表。它看起来大致是这样的:

我正在尝试找到一种使输出类似于以下内容的方法:

有没有人遇到过这样的事情?对我(作为一个人)来说,这些数字是(或不)连续的,并且是(或不是)整个样本的表示,但我不确定如何让 MYSQL 理解它,这对我来说很明显。我很欣赏任何想法。

*编辑 - 我尝试了 Join 和 Where Not Exists 替代方案,并且都在 10 分钟后超时。我相信这是由于主表的大小(约 100,000 行)。你有什么建议吗?再次感谢所有评论。

** 编辑 #2 - 添加索引并稍微调整我的表格后,两种解决方案都很好用。再次感谢您对解决此问题的支持。

0 投票
2 回答
1127 浏览

mysql - SQL GROUP BY:连续的间隔?

这个想法是说你有下表。

如果可以按连续性分组,则此伪查询

会回来

如果在 oID 处出现连续性中断,或者更确切地说是缺少连续性中断,则表示 oID 4 的条目。

Sql 的标准函数中是否存在这样的功能?

0 投票
2 回答
1796 浏览

sql - 在 Oracle SQL 中分组一个(有时是非连续的)天数

我正在寻找一个需要连续几天的查询,并将它们组合在一起,具体取决于它们是否真的连续以及属于该日期的值。我正在使用 Oracle 版本 11g。

这是一些示例数据:

(这是相当大的查询的结果)

我正在寻找的会将这些日子组合在一起,如下所示:

我们确实设法制定了一个执行我想要的查询,但这不是一种非常有效的方式,我很确定存在更好/更优雅的东西。这就是我现在正在使用的:

有没有人知道如何在没有所有连接的情况下更快地做到这一点?谢谢!

0 投票
4 回答
161 浏览

mysql - 如何在数据库中没有记录的 MySQL 结果中添加日期?

考虑以下“消息”表:

我想计算每天的消息数量,但也想包括所有没有消息的日子。假设我要统计 2012-02-01 和 2012-03-29 之间的所有消息,那么查询结果应该是:

这在 MySQL 中可能吗?

0 投票
1 回答
500 浏览

sql - 返回最新“连续”数据的行

给定一个包含以下数据的简单表:

我将如何编写查询以返回使用 PostgreSQL 的最新连续输赢行?在这种情况下,我正在寻找以下结果:

我猜答案是使用lag()和分区语法,但我似乎无法确定。