当前位置: 首页 > 知识库问答 >
问题:

在Oracle中每隔15秒获取查询结果

后安民
2023-03-14

我有以下查询来获得15秒的间隔。然而,即使结果没有值,我也想显示“0”值。

以下是问题;

select to_char(trunc(sample_time,'hh24') + (trunc(to_char(sample_time,'mi')/1)*1)/1440 + (trunc(to_char(sample_time,'ss')/15)*15)/86400,'hh24:mi:ss') as SAMPLE_TIME,nvl(wait_class,'CPU') as waits,round(count(*)/15,2)
from gv$active_session_history
where sample_time >= sysdate-60/1440
group by wait_class,to_char(trunc(sample_time,'hh24') + (trunc(to_char(sample_time,'mi')/1)*1)/1440  + (trunc(to_char(sample_time,'ss')/15)*15)/86400,'hh24:mi:ss')
order by 1 desc,3 desc;

结果是;

SAMPLE_TIME    WAITS   COUNT
-----------------------------
14:59:30        CPU     3
14:59:00        CPU     2    
14:58:45        CPU     2
14:58:30        CPU     1
14:58:15        CPU     2
14:57:45        CPU     2

我想要的是这个;

    SAMPLE_TIME    WAITS   COUNT
    -----------------------------
    14:59:30        CPU     3
    14:59:15        CPU     0  // Added 14:59:15    
    14:59:00        CPU     2    
    14:58:45        CPU     2
    14:58:30        CPU     1
    14:58:15        CPU     2
    14:58:00        CPU     0  // Added 14:59:15
    14:57:45        CPU     2

我应该从上面的问题中改变什么?

共有1个答案

鲁滨海
2023-03-14

您可以使用如下子查询,以15秒的间隔生成最后一小时内所有日期的列表:

select trunc(sysdate, 'mi') - 15*level/(60*60*24) 
from dual
connect by level < 60*60/15;

在查询中插入:

with a as (
    select trunc(sysdate, 'mi') - 15*level/(60*60*24) as sample_time 
    from dual 
    connect by level < 60*60/15
)
select 
    a.sample_time,
    nvl(wait_class,'cpu') as waits,
    round(sum(decode(ash.wait_class, null, 0, 1))/15,2)
from a
left join gv$active_session_history ash 
    on ash.sample_time between a.sample_time and a.sample_time + 15/(60*60*24)
group by a.sample_time, wait_class
order by 1 desc,3 desc;
 类似资料:
  • 问题内容: 我有一个监视系统,它每n秒收集一次数据(n大约为10,但有所不同)。我想每隔15分钟汇总一次收集的数据。有没有一种方法可以将时间戳记值合并为15分钟的块,以便分组工作? 问题答案:

  • 问题内容: 我有一个简单的Java程序,该程序读取一个文本文件,将其分隔为“”(空格),显示第一个单词,等待2秒,显示下一个…等等…我想在Spring或其他一些GUI。 关于如何使用spring轻松更新单词的任何建议?遍历我的列表并以某种方式使用setText(); 我没有运气。我正在使用此方法在consol中打印我的单词,并向其中添加JFrame …在consol中效果很好,但是却发出了无尽的j

  • 我有用于分页的逻辑,它工作得非常好。这个问题是为了优化/改进我是如何做某事的。 我正在运行两个查询以获得结果集。第一个查询按限制和偏移量获取所有项,第二个查询获取总计数。我需要这个总数来计算表示层中的分页链接。 我想避免运行两个查询,如果可能的话,将它们合并成一个。 例如,如果数据库中有100项,并且我运行下面的查询时为1,为20,那么查询应该返回20个结果和100个计数。我目前在两个单独的查询中

  • 问题内容: 我有一个供用户使用的表,该表具有一个名为“ created”的字段,该字段具有注册日期。 如何获得包含过去12个月每月注册数量计数的列表?像这样: 我不习惯使用mysql,所以直到现在,我只知道如何计算去年的注册数量,而不是如何按最近12个月的数量进行分组。提前致谢! 更新 现在,我使用@fthiella解决方案来得到这个: 我如何强制查询给我计数为0的月份? @fthiella解决方

  • 问题内容: 我如何能够在oracle查询中为几个组获得N个结果。 例如,给定下表: 有更多行和更多职业。我想从每个职业中聘请三名员工(可以说)。 有没有不用子查询就可以做到这一点的方法? 问题答案: 这将产生所需的内容,并且不使用供应商特定的SQL功能(例如TOP N或RANK())。 在此示例中,它为三位雇员提供每个职业emp_id最低的值。您可以更改不等式比较中使用的属性,以使其按名称或其他方

  • 问题内容: 我想知道如何使用Java获取解释计划。我之所以需要它,是因为我们有一个特殊用户可以编写报告的框架。这些报告有时会生成大量查询,我们想在其中动态解释并存储其成本。这样,我们可以稍后分析高成本查询并进行优化。 给我非法列异常的示例代码: 问题答案: 用这个: