Oracle Analytics日期范围

时间:2009-11-05 19:46:30

标签: oracle

在研究Oracle Analytics时,我遇到了这个问题:

select an_id, 
    a_date, 
    min(a_date) over (
        partition by an_id, trunc(a_date) 
        order by a_date
        range between (2.5/24) preceding and (2.5/24) following
    ) mn,
    max(a_date) over (
        partition by an_id, trunc(a_date) 
        order by a_date
        range between (2.5/24) preceding and (2.5/24) following
    ) mx
from a_table

我相信这会在2.5小时内找到给定an_ida_date的最短和最长日期。

我的问题是为什么a_date(日期)和2.5/24(数字)之间的比较有效,以及如何针对天,月或年的范围进行修改?

3 个答案:

答案 0 :(得分:2)

日期类型允许算术,其中1的单位是一天,所以明天是SYSDATE + 1.

例如,尝试从双重选择to_char(sysdate + 1/24,'DD-MON-YY HH:MM:SS') - >从现在起1小时。

答案 1 :(得分:2)

以下是讨论该特定分析结构的文档,以提供一些基本信息,并添加到jwilson提到的内容中。

http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions001.htm#i97640

答案 2 :(得分:2)

使用间隔来指定窗口范围可能更清楚:

http://download.oracle.com/docs/cd/B19306%5F01/server.102/b14200/functions104.htm#i89943

SELECT last_name,
       hire_date,
       salary,
       SUM(salary) OVER (ORDER BY hire_date 
                         RANGE    NUMTOYMINTERVAL(1,'year') PRECEDING) AS t_sal 
FROM   employees;