时间戳差异Oracle Query

时间:2015-03-18 13:33:32

标签: sql oracle

我已经写下了一个查询,下面给出了从某个表中获取记录的信息。

select g.logtekst DESCRIPTION,g.loggruppe loggroup,TO_CHAR(d.logdato, 'MM-DD-YYYY HH24:MI:SS') logdate 
,d.logtype,d.systemnavn,d.rkibrugernr username,d.psp_id customernumber  
from logbasis_Trans d,logtyper g where d.logtype=g.logtype and d.logdato>Sysdate-720 .

VIR opslag  VIR 03-10-2015 09:53:38 250 NTMF    CONDLOGB    93939393
VIR opslag  VIR 03-10-2015 13:53:52 250 NTMF    CONDLOGB    93939393
Sog opslag  VER 03-10-2015 14:45:30 251 NTMF    CONDOLDB    91919191
Sog opslag  VER 03-10-2015 14:45:31 251 NTMF    CONDOLDB    91919191
Sag opslag  VIR 03-10-2015 14:45:30 251 NTMF    JONDOLDB    95919191
Sog opslag  VJR 03-10-2015 14:45:31 251 NTMF    CFNDOLDB    91719191

这基本上列出了查询结果的行。

现在,我只想要这样的 customerNumber (在这种情况下是最后一列),其中所有剩余的列都相同(Log Group Same),但时间差<1这些列之间的分钟。

在这种情况下,第一行和第二行是多个条目,因为时间戳相差1分钟和3-4列但不是5和6列。

可以修改这些查询以获取此类数据,或者可以在excel中进行某些操作,只删除这些类型的重复记录。

1 个答案:

答案 0 :(得分:0)

使用此声明来获得微小差异:

(d.logdato - LAG(d.logdato, 1) OVER (PARTITION BY d.psp_id, d.logtype ORDER BY d.logdato))*24*60 AS diff_min

说明:
我们从此行获取logdato并从一组记录(LAG 1)中的前一行(OVER)中减去logdato,其中相同的psp_id和logtype(PARTITION BY)由logdato({{ 1}}),最后我们将结果乘以得到天数的分钟