[英]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
我按周和时间戳记差异排序。 周数基于“ own_task”的周。
这是假设恰好有一行 “owned_task”,一个用于每个“fwd_task” (iduser, idobject)
每周一个也没有。 您的规格留有解释的余地。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.