【问题标题】:Time stamp difference Oracle Query时间戳差异 Oracle Query
【发布时间】:2015-03-18 13:33:31
【问题描述】:

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

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(在这种情况下是最后一列),它的所有剩余列都相同(日志组相同)但这些列之间的时间差是

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

可以修改这些查询以获得此类数据或某些操作可以在 excel 中仅删除这些类型的重复记录。

【问题讨论】:

标签: sql oracle


【解决方案1】:

使用此语句获取细微差别:

(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) 中减去 logdato,在一组记录 (OVER) 中具有相同的 psp_id 和 logtype (PARTITION BY),由 logdato (ORDER BY) 排序,最后我们相乘从天获取分钟的结果

【讨论】:

  • 非常感谢,下面的查询只会给我从这些“中选择不同的客户编号”中唯一的客户编号(选择 g.logtekst 描述,g.loggruppe 日志组,TO_CHAR(d.logdato,'MM-DD -YYYY HH24:MI:SS') logdate ,d.logtype,d.systemnavn,d.psp_id customernumber,(d.logdato - LAG(d.logdato, 1) OVER (PARTITION BY d.psp_id, d.logtype ORDER BY d.logdato))*24*60 AS diff_min from logbasis_Trans d,logtyper g where d.logtype=g.logtype and d.logdato>Sysdate-720 group by d.logtype,g.logtekst,g.loggruppe,d.logdato ,d.systemnavn,d.psp_id) 其中 diff_min
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-27
  • 2021-01-23
  • 2012-06-03
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
相关资源
最近更新 更多