问题标签 [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 投票
1 回答
65 浏览

mysql - 查找类型 B 和 C 之间发生的所有类型 A 的日志事件

我正在尝试找到一种很好的方法来查找在事件类型 B 和 C 之间同时发生的所有类型 A 的事件。

此外,事件 B 和 C 必须共享一个 process_id。

每个 process_id 组将有一个 B 事件和一个 C 事件。

表结构如下所示:

我的尝试看起来像这样:

当我运行它时,它挂起。关于更有效或更固定的方法来做到这一点的任何想法?

谢谢!

0 投票
2 回答
1957 浏览

mysql - MySQL如何填补范围内缺失的小时/日期?

我正在尝试根据同一语句中的星期几和一天中的时间提取数据(这样我就可以看到我每小时和一周内获得了多少次访问。这是声明。

一些样本数据

问题 如您所见,数据中缺少数小时的数据。由于我正在创建一个图表,该图表需要每天 [x,x,x,x,x,x,x] 形式的数据,这将与从第一个输出开始的 24 小时时间线相匹配,我需要缺少的是'0'。

虽然我可以用循环在 PHP 端处理它,但在一周中的每一天以及在此之内,每小时循环它是相当烦人的,而且绝对不干净。

是否可以没有临时表(例如在查询本身中包含 24 位数字等?)?

0 投票
4 回答
282 浏览

sql - 减少表以避免空间效率低下

我有下表:

我想获得下表;

过程 ;

但实际表格应简化为如下所示

我怎样才能做到这一点 ?

0 投票
3 回答
103 浏览

sql - 在最大连胜中的行?

鉴于行

我将如何最有效地选择最大连胜(利润)中涉及的行。

最大的连胜将是前 3 行,我想要那些行。我想出的查询只是一堆嵌套查询和派生表。我正在寻找一种使用公用表表达式或更高级的方法来执行此操作的有效方法。

0 投票
2 回答
270 浏览

sql - SQL close close 随着时间的推移数据中的差距

我有一个用于原型的游戏数据表。我在工作时生成数据,但是当我离开并且我的机器进入睡眠状态时,数据生成停止。这导致我的收藏品出现了很大的空白。

我希望能够移动DateTimeCreated表格列中每个项目的值,以便任何项目与下一个生成的项目之间的间隔不超过 10 分钟。

表的结构是这样的:

我正在考虑在 L2S 中执行此操作,但我有超过 100 万条记录,所以 IDK 如果这是最好的解决方案(迭代每个项目)。我知道在 SQL 中必须有一些方法可以更快地做到这一点。

0 投票
2 回答
145 浏览

sql - 如何为丢失的数据生成间隙

我的数据结构如下:

在此处输入图像描述

使用以下 CTE:

我创建了一个如下所示的“日期集”:

在此处输入图像描述

问题是:原始数据集中的某些数据在 CTE 中没有对应的日期(在提供的示例中,数据中不存在 2012-01-24 6:00)。

对于这些缺失的数据点,我希望将“NULL”视为它们的值。我想我也许可以利用我生成的 CTE 中的日期,但我不确定我该怎么做。

我尝试过这样的事情但没有成功:

0 投票
2 回答
820 浏览

sql - Oracle:如何根据日期字段确定是否存在间隙记录?

我有一个管理员工时间表的应用程序。

我的表看起来像:

每个时间表涵盖 14 天的时间段,因此每个 TIMESHEET 记录有 14 条 TIMESHEET_DAY 记录。如果有人去度假,如果在这 14 天期间没有工作时间,他们就不需要输入时间表。

现在,我需要确定员工在前 6 个月内是否有 7 天的空档。这意味着我必须查找 7 个连续的 TIMESHEET_DAY 记录,时间为 0 小时,或者 7 天的时间段(没有提交的记录和提交的工作时间为 0 小时的记录的组合)。在这种情况下,我需要知道最后一个 TIMESHEET_DAY 记录的 DATE_WORKED 和小时。

该应用程序是 asp.net,因此我可以检索所有 TIMESHEET_DAY 记录并遍历它们,但我认为必须有一种更有效的方法来使用 SQL 执行此操作。

0 投票
3 回答
7230 浏览

sql - 如何生成 sysdate-30 和 sysdate+30 之间的所有日期列表?

目的和到目前为止我所拥有的

我正在尝试创建一个视图来检查丢失的劳动力交易。该视图将提供给 Crystal 报表。

在这种情况下,视图应采用 sysdate+30 和 sysdate -30 之间的所有日期,然后应将所有这些日期的在职员工的所有劳动记录留在外部联接。然后,它会计算每个员工在每个日期的劳务交易次数。

这将传递给 Crystal Report,它将根据特定的日期范围(在视图的 +/- 30 范围内)进行过滤。从那里开始,Crystal 中每个员工的所有天数将汇总,员工将显示哪些交易为零。

问题

在没有吐出每个日期的列表的情况下,最初,我在每个日期都使用人工交易,但有些人对任何日期都没有计数。这些人显示零小时的空交易日期。这表明他们在整个期间不收费,这是有道理的。

但是,当 Crystal 对该数据进行过滤并选择一个范围时,我相信它会忽略这些空值,因此不允许我展示所有没有时间提交的人。

问题

有没有办法在视图中执行相当于“选择 (sysdate+30) 和 (sysdate-30) 之间的每个日期”的方法,以便我可以一直使用它来比较?

SQL(供参考)

0 投票
4 回答
1673 浏览

sql - 从表中选择连续范围

我需要根据连续数字(N 列)和这些数字相关的相同“类别”(下面的 C 列)从表中提取连续范围。从图形上看,它看起来像这样:

SQL Server 是 2005。谢谢。

0 投票
3 回答
514 浏览

sql - SQL:检测任意日期系列中的间隙的内置方法?

我有一组输入历史报告的表格。现在生成报告需要一段时间,我想创建缓存表来存储编译后的数据,然后将这些数据输入到报告中。

这些缓存表的一个键是日期字段。我想确保在我使用的任何日期系列中没有任何间隔——例如,我不想记录 1 月 1 日和 3 日的记录,而 2 日没有行。

我想不出用 RDBMS 中的任何关系工具来强制执行此操作的方法。我可以设置一个日期表,以确保相关记录不会超出一系列日期——如果我的“日期系列”表中没有匹配的行,则不允许 1 月 2 日——但我没有'不知道如何自动确保我不会跳过某个范围内的日期。

在数据库模式定义中是否有自动执行此操作的方法?还是我必须检查代码中的空白?

我正在使用 MySQL,但这似乎与 RDBMS 无关。