获取每周平均高价和低价的数据

Get Data for every weeks average of high and low prices

我有 table 命名为

FP_BASIC_BD

其结构如下

Name           Null?    Type         
-------------- -------- ------------ 
FS_ID          NOT NULL VARCHAR2(20) 
DATE           NOT NULL DATE         
CURRENCY                CHAR(3)      
PRICE                 FLOAT(126)   
PRICE_OPEN            FLOAT(126)   
PRICE_HIGH            FLOAT(126)   
PRICE_LOW             FLOAT(126)   
VOLUME                FLOAT(126)   

对于 FS_ID 的任何值,我想计算

weekends date
week start date
average(High of PRICE_HIGH+Low of PRICE_LOW)

所有周。

周末被视为周五 如果周五数据不可用,则尝试获取 1 或之前但之后或等于 周一 的任何一天那一周。

周开始被视为 星期一。如果星期一的数据不可用,则在上述步骤中获取 1 或提前但小于或等于周末的任何一天。

获取周末和周开始日期的任务可以在不同的查询中完成。但我想将它用作单个查询中的范围并获得所需的平均值。

首先,不要使用 Oracle 关键字(例如 date)作为列名。 其次,您对如何计算平均值的描述含糊不清,因此我提供了几个选项。

我认为这应该可以确定您一周的开始/结束日期。

select
    trunc("DATE", 'IW') as week,
    min(trunc("DATE")) as week_start,
    max(trunc("DATE")) as week_end,
    (max(price_high) + min(price_low)) / 2 as avg_price_weekly,
    avg(price_high+price_low) as avg_price_daily
from fp_basic_bd
where to_char("DATE", 'DY') not in ('SAT','SUN')
group by trunc("DATE", 'IW');

根据您的描述,我猜您在 table 中没有任何 Saturday/Sunday 日期。如果您这样做,并且您特别想将它们排除在该查询之外,请告诉我,我会更新我的答案。

编辑:已更新以排除周末 (sat/sun)。