首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Postgresql时间戳最小最大值不正确/如何处理异常值

Postgresql时间戳最小最大值不正确/如何处理异常值
EN

Stack Overflow用户
提问于 2020-07-01 18:33:32
回答 1查看 58关注 0票数 0

这是我的第一篇文章,请耐心等待。我是sql的新手,但我想我已经掌握了一些基础知识。

我在计算每个人在现场的时间。有几个时间戳,所以我一直使用以下代码

代码语言:javascript
运行
AI代码解释
复制
MIN (to_char(c.capture_time, 'YYYY-MM-DD HH24:MI:SS')) AS "start day",              
MAX(to_char(c.capture_time, 'YYYY-MM-DD HH24:MI:SS')) AS "end of day",  

我得到了下面的输出

代码语言:javascript
运行
AI代码解释
复制
User        Project     Start Day       End Day     
person A    project 1   6/10/20 15:10   6/10/20 20:43       
person A    project 2   6/11/20 12:10   6/11/20 16:10       
person B    project 8   6/11/20 11:10   6/11/20 18:23       

然后我将数据下载到csv文件,并通过执行(end-start)*24来计算持续时间

此代码适用于大约85%的用户/项目

我开始遇到的问题是当有异常情况或时间段进入第二天时

问题1-异常值(原始数据)

代码语言:javascript
运行
AI代码解释
复制
User        Project     Capture End time        
person A    Project 1   6/10/20 15:10       
person A    Project 1   6/10/20 15:20       
person A    Project 1   6/10/20 15:40       
person A    Project 1   6/10/20 16:05       
person A    Project 1   6/10/20 20:43

在这个例子中,最后一个时间戳是关闭的,你可以通过较大的时间间隔来判断。我需要以某种方式忽略极端异常值

问题2-时间戳进入第二天(原始数据)

代码语言:javascript
运行
AI代码解释
复制
User        Project     Capture End Time
person B    Project 2   6/15/20 23:12
person B    Project 2   6/15/20 23:45
person B    Project 2   6/16/20 0:15
person B    Project 2   6/16/20 0:30
person B    Project 2   6/16/20 20:05
person B    Project 2   6/16/20 20:30

我得到以下结果(输出):

代码语言:javascript
运行
AI代码解释
复制
User        Project     Start Day       End Day
person B    Project 2   6/15/20 23:12   6/15/20 23:45
person B    Project 2   6/16/20 0:15    6/16/20 20:30

而不是(期望的结果):

代码语言:javascript
运行
AI代码解释
复制
User        Project     Start Day       End Day
person B    Project 2   6/15/20 23:12   6/16/20 0:30
person B    Project 2   6/16/20 20:05   6/16/20 20:30

我不确定如何处理这个问题,所以我希望得到任何指导

EN

回答 1

Stack Overflow用户

发布于 2020-07-01 20:38:55

这是一个“差距和岛屿”的问题,有一个扭曲,可以有一个延迟来考虑何时“关闭一天”。我决定在两天之间使用2小时的最小间隔。您可以将其更改为更长或更短的间隔,以满足您的需要。

下面的查询会产生您想要的结果:

代码语言:javascript
运行
AI代码解释
复制
select usr, project,
  min(captured) as start_day,
  max(captured) as end_day
from (
  select *,
    sum(new_group) over(partition by usr, project order by captured) as day
  from (
    select *,
      case when captured > 
        max(captured) over(partition by usr, project order by captured
        rows between unbounded preceding and 1 preceding) + interval '2 hour'
        then 1 else 0
      end as new_group
    from t
  ) x
) y
group by usr, project, day

结果:

代码语言:javascript
运行
AI代码解释
复制
usr        project     start_day                  end_day                   
--------- ----------- -------------------------- -------------------------- 
Person B   project 2   2020-06-15T23:12:00.000Z   2020-06-16T00:30:00.000Z  
Person B   project 2   2020-06-16T20:05:00.000Z   2020-06-16T20:30:00.000Z  

请参阅DB Fiddle上的运行示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62683300

复制
相关文章
matlab中错误使用fmincon,MATLAB中fmincon 函数问题
[w,fval]=fmincon(@fun2,w0,[],[],Aeq,Beq,@myfuntestcon,options)
全栈程序员站长
2022/09/01
9490
matlab中错误使用fmincon,MATLAB中fmincon 函数问题
matlab中的ezplot函数详解_matlab中fix函数的用法
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说matlab中的ezplot函数详解_matlab中fix函数的用法,希望能够帮助大家进步!!!
Java架构师必看
2022/09/23
1.8K0
matlab中的ezplot函数详解_matlab中fix函数的用法
Matlab中的画图函数
之前在进行Matlab编程时,画图总是非常重要的一部分,在这里整理一下常用的绘图函数,以作备用。
全栈程序员站长
2022/11/06
3.5K0
Matlab中的画图函数
MATLAB中imfill()函数[通俗易懂]
函数功能: 该函数用于填充bai图像区域和“空洞”。 语法格式: BW2 = imfill(BW) 这种du格式将一张二值图像显示在屏zhi幕上, 允许用户使用鼠标在图像上点几个点, 这几个点围成的区域即要填充的区域。要以这种交互方式操作, BW必须是一个二维的图像。用户可以通过按Backspace键或者Delete键来取消之前选择的区域;通过shift+鼠标左键单击或者鼠标右键单击或双击可以确定选择区域。 [BW2,locations] = imfill(BW) 这种方式, 将返回用户的取样点索引值。注意这里索引值不是选取样点的坐标。 BW2 = imfill(BW,locations) 这种格式允许用户编程时指定选取样点的索引。locations是个多维数组时, 数组每一行指定一个区域。 BW2 = imfill(BW,’holes’) 填充二值图像中的空洞区域。 如, 黑色的背景上有个白色的圆圈。 则这个圆圈内区域将被填充。 I2 = imfill(I) 这种调用格式将填充灰度图像中所有的空洞区域。 BW2 = imfill(BW,locations,conn) 程序示例 close all; clear; clc; BW4 = im2bw(imread(‘coins.png’)); BW5 = imfill(BW4,’holes’); subplot(121), imshow(BW4), title(‘源图像二值化’) subplot(122), imshow(BW5), title(‘填充后的图像’)
全栈程序员站长
2022/09/20
9800
matlab中的im2bw函数_matlab中tofloat
这种du格式将一张二值图像显示在屏zhi幕上, 允许用户使用鼠标在图像上点几个点, 这几个点围成的区域即要填充的区域。要以这种交互方式操作, BW必须是一个二维的图像。用户可以通过按Backspace键或者Delete键来取消之前选择的区域;通过shift+鼠标左键单击或者鼠标右键单击或双击可以确定选择区域。
全栈程序员站长
2022/09/30
1.1K0
matlab中fmincon函数的使用
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/130502.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/11
1.6K0
Matlab中length函数的使用
创建一个包含 Day 和 Month 对应的字段的结构体。使用structfun函数将length应用于各个字段。
全栈程序员站长
2022/09/05
1.6K0
IDEA中调试Topology出现的错误
在IDEA的maven项目中编写Topology出错: NoClassFound找不到主类:解决– 在pom.xml中,找到中的storm,添加<>compi<>
ZONGLYN
2019/08/08
1.5K0
matlab灰度化处理函数_matlab中imfinfo的用法
Matlab infl()依次使用函数IM=imreconstruct(marker,mask)
全栈程序员站长
2022/09/30
6910
matlab fopen fread_matlab中prctile函数
大家好,又见面了,我是你们的朋友全栈君。 matlab中length函数 length(x)在matlab中是什么意思?小编能记住你的一点一滴,你却忘了小编的一丝一毫。 if length(h)>1
全栈程序员站长
2022/09/30
1.3K0
matlab fopen fread_matlab中prctile函数
Matlab中axis函数使用
坐标轴范围,指定为包含 4 个、6 个或 8 个元素的向量。对于笛卡尔坐标区,以下列形式之一指定范围:
全栈程序员站长
2022/09/02
3.7K0
Matlab中axis函数使用
matlab中find函数用法[通俗易懂]
注:竖着数!! 2.条件:find(A==1) 例如:返回的仍然是位置!
全栈程序员站长
2022/09/13
1.6K0
matlab中find函数用法[通俗易懂]
MATLAB中meshgrid函数用法
涉及到x、y、z三组数据,而x、y这两组数据可以看做是在Oxy平面内对坐标进行采样得到的坐标对(x,y)。表中一共有7*7=49个数据,我们分别标出来,得到下图
全栈程序员站长
2022/09/06
2.1K0
MATLAB中meshgrid函数用法
Matlab中fprintf函数使用[通俗易懂]
formatSpec 输入中的 %4.2f 指定输出中每行的第一个值为浮点数,字段宽度为四位数,包括小数点后的两位数。formatSpec 输入中的 %8.3f 指定输出中每行的第二个值为浮点数,字段宽度为八位数,包括小数点后的三位数。\n 为新起一行的控制字符。
全栈程序员站长
2022/11/02
4.8K0
MATLAB中plot函数_getline函数用法
此 MATLAB 函数 创建 Y 中数据对 X 中对应值的二维线图。 如果 X 和 Y 都是向量,则它们的长度必须相同。plot 函数绘制 Y 对 X 的图。 如果 X 和 Y 均为矩阵,则它们的大小必须相同。plot 函数绘制 Y 的列对 X 的列的图。 如果 X 或 Y 中的一个是向量而另一个是矩阵,则矩阵的各维中必须有一维与向量的长度相等。如果矩阵的行数等于向量长度,则 plot 函数绘制矩阵中的每一列对向量的图。如果矩阵的列数等于向量长度,则该函数绘制矩阵中的每一行对向量的图。如果矩阵为方阵,则该函数绘制每一列对向量的图。 如果 X 或 Y 之一为标量,而另一个为标量或向量,则 plot 函数会绘制离散点。但是,要查看这些点,您必须指定标记符号,例如 plot(X,Y,‘o’)
全栈程序员站长
2022/11/03
1K0
MATLAB中plot函数_getline函数用法
matlab中的length函数「建议收藏」
s=size(A),当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时数组的行数,第二个元素是数组的列数。
全栈程序员站长
2022/08/13
2K0
Matlab中窗函数的简单使用
这里主要是对窗函数的简单应用做些介绍,是在已知滤波器阶数的情况下,设计滤波器。多数情况下,在不能直接知道滤波器阶数的时候,可参考“http://www.cnblogs.com/sunev/archive/2011/11/23/2260579.html”。
AIHGF
2019/02/18
3.6K0
matlab定义函数句柄_matlab的fmincon函数
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说matlab定义函数句柄_matlab的fmincon函数,希望能够帮助大家进步!!!
Java架构师必看
2022/06/27
8330
matlab输出语句fprintf例子_matlab中compose函数
golang需要的基础是:首先初学Go语言要弄懂基础语法和概念;然后掌握文件操作、网络编程、锁、协程、对象序列化和反序列化,以及各种数据格式的封装等;最后接触数据库等,就可以模块化开发。
全栈程序员站长
2022/09/28
1.9K0
matlab输出语句fprintf例子_matlab中compose函数
点击加载更多

相似问题

绘制函数时出现MatLab错误

10

为什么会出现此错误- MATLAB

30

Matlab -为什么会出现此错误

11

使用MATLAB函数"errorbar“时出现错误

10

运行Matlab函数时出现FSEEK错误

211
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档