我有一个程序,该程序每分钟通过PING检查网络中计算机的状态。每次它将向数据库插入新行,如下所示(我使用的是postgresql)
id_status status checking_time(timestamp) id_device(int)
1 OK '2017-01-01 00:00:00' 1
2 OK '2017-01-01 00:00:00' 2
3 OK '2017-01-01 00:00:00' 3
4 Failed '2017-01-01 00:01:00' 1
5 OK '2017-01-01 00:01:00' 2
6 OK '2017-01-01 00:01:00' 3
7 Failed '2017-01-01 00:02:00' 1
8 OK '2017-01-01 00:02:00' 2
9 OK '2017-01-01 00:02:00' 3
10 Failed '2017-01-01 00:03:00' 1
11 OK '2017-01-01 00:03:00' 2
12 OK '2017-01-01 00:03:00' 3
13 OK '2017-01-01 00:04:00' 1
14 OK '2017-01-01 00:04:00' 2
15 OK '2017-01-01 00:04:00' 3
我希望结果如下
status from_time(timestamp) to_time(timestamp) id_device(int)
OK '2017-01-01 00:00:00' '2017-01-01 00:01:00' 1
Failed '2017-01-01 00:01:00' '2017-01-01 00:04:00' 1
OK '2017-01-01 00:04:00' NOW 1
OK '2017-01-01 00:00:00' NOW 2
OK '2017-01-01 00:00:00' NOW 3
如何获得此输出?
这是差距和孤岛的问题。可以解决如下:
select t.status,
t.from_time,
coalesce(CAST(lead(from_time) over (partition by id_device order by from_time) AS varchar(20)), 'NOW') to_date,
t.id_device
from
(
select t.status, min(checking_time) from_time, t.id_device
from
(
select *, row_number() over (partition by id_device, status order by checking_time) -
row_number() over (partition by id_device order by checking_time) grn
from data
) t
group by t.id_device, grn, t.status
) t
order by t.id_device, t.from_time
dbffile演示
关键是最嵌套的子查询,在该子查询中,我使用两个row_number
函数来隔离设备上相同状态的连续出现。一旦有了grn
价值,剩下的就很容易了。
结果
status from_time to_time id_device
------------------------------------------------------------
OK 2017-01-01 00:00:00 2017-01-01 00:01:00 1
Failed 2017-01-01 00:01:00 2017-01-01 00:04:00 1
OK 2017-01-01 00:04:00 NOW 1
OK 2017-01-01 00:00:00 NOW 2
OK 2017-01-01 00:00:00 NOW 3
我正在做一个游戏,但是我在使用“相交”功能时遇到了一个问题。塞纳里奥看起来像这样;我做了一个游戏,玩家是一个长方形,目标是杀死敌人。敌人的“老板”矩形有两个“模拟”,模拟一个运动和一个攻击。这些模拟是由向量驱动的。移动是水平来回的,攻击是垂直的,一种冲锋式的交易。boss也有一个矩形的目标区域,如果被截断,“boss”将在屏幕上冲锋。现在问题来了,当我试图让它,如果球员与矩形目标区域相交,“老板”
问题内容: 我有一个类似于以下内容的插入语句: 我需要使用多个ID插入同一条语句。现在我有: 我只是必须运行此程序,还是有一个更精简的版本? 问题答案: 使用:
下面是我的wiremock存根映射: 因此,当客户端使用url模式=/api/myApp执行http请求时,WireMock返回成功http状态=200。 美好的很好。 但我需要当客户端使用相同的url模式执行第二个请求时,WireMock必须返回这个存根响应: 所以: 第一个要求- 第二个同样的请求- 可以用WireMock吗?
我有一个(可能很大的)列表,包含三个小的非负整数元组,比如 我想对中的元组进行排序,以便相邻的元组(和)“尽可能相似”。 定义两个三元组的不相似性为它们之间不相等的元素的数量。例如。 vs.:差异. vs.:差异. vs.:差异. vs.:差异. vs.:差异. 问题:寻找排序的好算法是什么,它可以最小化所有相邻三元组之间的差异之和? 下面是一个计算两个三元组之间差异的函数: 这里有一个函数,它计
这个 邻接列表 模式是一种常见的关系模式,通过该模式,表包含对其自身的外键引用,换言之,是 自指关系 。这是在平面表格中表示分层数据的最常见方式。其他方法包括 嵌套集 ,有时称为“修改的预购”,以及 物化路径 。尽管在评估SQL查询内的流畅性时,修改的预排序很有吸引力,但由于并发性、降低复杂性的原因,邻接列表模型可能是最适合大多数分层存储需求的模式,而且与可以将子树完全加载到应用程序空间的应用程序
对于单链表,交换非相邻单元格可以通过以下操作来描述,假设'= 但是,该操作不适用于交换相邻记录、创建循环链接,如X- 相邻的记录交换,假设X在Y之前,可以用一组单独的操作来描述: 我似乎无法将这组操作作为前一组或父组的常见子集来解决。 是否有一套统一的、无条件的操作来描述对相邻和非相邻记录都有效的交换?