我有一张有设备故障和解决日期的桌子.在故障解决之前,每天的条目将显示为失败.问题解决后,数据将从下一个故障日期开始.下面是一个例子

enter image description here

I want an output which will give me the first failure time for each resolved timestamp like enter image description here

我试着在解析的时间戳和失败日期之间做一个左连接,并取最小值,但这不起作用.

推荐答案

考虑下面的方法

select type, 
  max(timestamp) resolved_timestamp,
  min(timestamp) first_failure_timestamp
from (  
  select *, countif(status='resolved') over win as grp
  from your_table
  window win as (partition by type order by timestamp rows between unbounded preceding and 1 preceding)
)
group by type, grp    

如果应用于y中的样本数据,我们的问题是-输出为

enter image description here

Sql相关问答推荐

在数据分区内执行确定

使用来自不同深度的嵌套组的值执行计算的干净方法?

基于多个字段删除Access中的重复记录,同时保留最低优先级

如何根据给定条件PostgreSQL迭代减少组中的行数

收到%1、%2或%2邮箱的唯一客户

如何隐藏聚合JSON数组元素的键

对列进行排序后,基于两列删除重复行

用户购买平台及金额统计

数据库SQL PARSE_SYNTAX_ERROR

缺少日期标识

向表中添加新列取决于表的日期列(unpivot)

我需要在 ASP.NET C# 中获取 2 个 SQL 查询结果的平均值

从另一个没有公共键的表中获取值来加入

如何向 mariadb 添加外键?

获取多个开始-结束时间戳集之间经过的时间

为什么 get_json_object() 无法从存储在 Hive SQL 表中的 JSON 中提取值?

SQL - 只需要 GROUP BY SELECT 的一列

postgres按组消除分区中的NULLS

如何使用 pg-promise 创建要在复杂的 sql 查询中使用的 VALUES 列表?

在 Microsoft SQL Server 中,如何只为特定值保留不同的行?