这可能是一个非常基本的问题,所以提前道歉。我需要过去 3 个月、6 个月、1 年、2 年等的样本数量,这取决于我是否有足够的样本,(我试图通过追溯历史来收集足够数量的样本,所以当我收集够了,我会停下来)我会和他们一起做一些计算。首先,我选择过去 2 年可用的任何数据。然后我查看过去一年和过去 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 年的值,我将计算它们的平均值、中值、IQR 等。
如果 TOTAL_N_IN_1_YEAR > 30,则此方法现在有效,但例如对于 <30 无效。
非常感谢您的帮助:)