我知道我的标题不是很有用,但让我解释一下我想要做什么。 这是我在Oracle服务器上运行的SQL查询:
select
median(to_number(TRU.TS_OBJECT.XE2ETIME)) as E2E,
median(to_number(TRU.TS_OBJECT.XPROCESSTIME)) as Serveur,
count(to_number(TRU.TS_OBJECT.XE2ETIME)) as hits,
TRU.TS_OBJECT.CSURISTEM
from
tru.ts_object
where
(TRU.TS_OBJECT.XSTARTTIME >= to_date('2014/01/08 05:30','yyyy/mm/dd HH24:MI') and TRU.TS_OBJECT.XSTARTTIME < to_date('2014/01/08 21:00','yyyy/mm/dd HH24:MI'))
and TRU.TS_OBJECT.CSMETHOD = 'POST'
and TRU.TS_OBJECT.SCSTATUS = '200'
Group by
TRU.TS_OBJECT.CSURISTEM
通过此查询,我可以找到我们向客户公开的Web服务的某些性能指标的中位数。所以这给了我在上午5点30分到下午21点之间的特定时间段,这一天的中位数(2014/01/08)。
现在尝试做的是产生相同的输出但是在更长的时间内,比如说2014/01/01到2014/01/29,但总是在每天5h30到21h00之间的数据。现在我是通过改变日期范围来手动完成的,但是应该采用一种“更聪明”的方式来选择某种类型!?!?!
答案 0 :(得分:0)
有两种方法可以做到:
DATEADD(day,45,OrderDate)
),插入每个迭代结果到表。datepart(hh, date)
)我认为在Oracle中执行选项2的方法是这样的:
where
(TRU.TS_OBJECT.XSTARTTIME >= to_date('2014/01/01 00:00','yyyy/mm/dd HH24:MI')
and TRU.TS_OBJECT.XSTARTTIME < to_date('2014/01/30 00:00','yyyy/mm/dd HH24:MI'))
and
(EXTRACT (HOUR FROM TRU.TS_OBJECT.XSTARTTIME) >5
and EXTRACT (HOUR FROM TRU.TS_OBJECT.XSTARTTIME) < 21 )