繁体   English   中英

Postgresql中行之间的时间戳差异

[英]Timestamp difference between rows in Postgresql

在PostgreSQL中我有一张桌子

CREATE TABLE cubenotification.newnotification
(
  idnewnotification serial NOT NULL,
  contratto text,
  idlocation numeric,
  typology text,
  idpost text,
  iduser text,
  idobject text,
  idwhere text,
  status text DEFAULT 'valid'::text,
  data_crea timestamp with time zone DEFAULT now(),
  username text,
  usersocial text,
  url text,
  apikey text,
  CONSTRAINT newnotification_pkey PRIMARY KEY (idnewnotification )
)

假设类型学字段可以是“ owned_task”或“ fwd_task”。 我想从数据库中获得的是每对夫妇“ idobject,iduser”的类型为“ fwd_task”的行的data_crea和类型为“ own_task”的行的data_crea严格之间以秒为单位的时间戳差异,我想还可以将EXTRACT(WEEK FROM data_crea)作为“周”,将结果按“周”分组。 我的问题主要是关于在具有相同idobject,相同iduser和不同类型的两行之间执行时间戳排序差异。

编辑:这里一些示例数据

样本数据

和sqlfiddle链接http://sqlfiddle.com/#!12/6cd64/2

您正在寻找的是两个子选择JOIN

SELECT EXTRACT(WEEK FROM o.data_crea) AS owned_week
     , iduser, idobject
     , EXTRACT('epoch' FROM (o.data_crea - f.data_crea)) AS diff_in_sek
FROM  (SELECT * FROM newnotification WHERE typology = 'owned_task') o
JOIN  (SELECT * FROM newnotification WHERE typology = 'fwd_task')   f
                                                         USING (iduser, idobject)
ORDER  BY 1,4

-> sqlfiddle的

我按周和时间戳记差异排序。 周数基于“ own_task”的周。

这是假设恰好有一行 “owned_task”,一个用于每个“fwd_task” (iduser, idobject)每周一个也没有。 您的规格留有解释的余地​​。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM