不同时间段的Oracle样本计数

时间:2018-08-21 12:57:00

标签: oracle count sample iqr

这可能是一个非常基本的问题,因此请您提前道歉。 我需要最近3个月,6个月,1年,2年等的样本数量。 并根据我是否有足够的样本,(我试图通过回顾历史来收集足够数量的样本,所以当我收集到足够的样本时,我将停止),我将对它们进行一些计算。首先,我选择过去两年中可获得的所有数据。然后,我查询过去一年和过去两年中有多少个样本。假设去年我说了30个样本就足够了,我就拿了。如果没有,我会延长到2年并尝试收集所有这些样本的值。

    COUNT(CASE WHEN ((to_date(sysdate)-to_date(c.sample_date)) < 365) THEN 1 END) AS TOTAL_N_IN_1_YEAR,
    COUNT(CASE WHEN ((to_date(sysdate)-to_date(c.sample_date)) BETWEEN 0 and 730) THEN 1 END) AS TOTAL_N_IN_2_YEARS,

    CASE WHEN (to_date(sysdate)-to_date(c.sample_date) < 365) THEN 1 ELSE 0 END as LASTYEAR,

    ROUND(avg(s.MV),9) mean,
    from
    schema.t_samples s
    schema.t_samples_calc c,
    where
    c.sample_id = s.sample_id
    c.sample_date > sysdate-730

    group by c.ch_id, c.ckc_id, CASE WHEN (to_date(sysdate)-to_date(c.sample_date) < 365) THEN 1 ELSE 0 END

如何引用我在TOTAL_N_IN_1_YEAR,TOTAL_N_IN_1_YEARS中计算出的这些值,并使用它们仅选择我需要的时间段内的样本值?

我想实现这样的目标

    CHANNEL ID | NO_OF_SAMPLES_IN_LAST_1_YEAR | NO_OF_SAMPLES_IN_LAST_2_YEARS | MEAN | MEDIAN | IQR ...etc.
    23           32 (let's say >30 is enough)      54  | ... | ...

现在我只需要最后32个样本的s.value ...

例如,如果TOTAL_N_IN_1_YEAR> 30,那么我只想要过去1年的值,我将计算它们的MEAN,MEDIAN,IQR等。

如果TOTAL_N_IN_1_YEAR> 30,则现在可以使用,但是对于<30,则无效。

非常感谢您的帮助:)

0 个答案:

没有答案