我试图使用SQL对时间序列数据进行分类。我有一个3年以上的参考数据点的数据。因此,参考发生36次,每个月一次。有时数量为0,而另一些时候,每一行的数量可能是25甚至更高。我想知道的是如何使用SQL (特别是MSSQL)计算这些方程。


然后,类似地,我希望将数据分类为Erratic、Smooth、Lumpy和/或Intermittent 如图所示。
需求平稳(ADI < 1.32,CV< 0.49)。需求在时间和数量上都是很有规律的。因此,这是很容易预测,您将不会有困难达到一个较低的预测错误水平。 间歇性需求(ADI、>=、1.32和CV均< 0.49)。需求历史表明,需求数量变化很小,但两种需求之间的间隔变化很大。虽然具体的预测方法解决了间歇性需求,但预测误差要大得多。 需求波动(ADI < 1.32,CV 2 >= 0.49)。需求在时间上有规律的发生,而且数量变化很大。你的预测精度仍然不稳定。 块状需求(ADI >= 1.32和CV 2 >= 0.49)。这种需求的特点是数量和时间变化很大。事实上,无论你使用哪种预测工具,都不可能做出可靠的预测。这种特殊的需求模式是无法预测的。
下面是生成我正在处理的表的查询。
SELECT
distinct
CHAN_ID
,PROD_CD
,CP_REF
,PARENT
,ORDERED_DATE
,QUANTITY
FROM DF_ALL_DEMAND_BY_ROW_V
where parent is not nullCP_REF是我关注的ID。
下面是前12行的示例。

请问你是否需要更清晰。我的SQL技能还不够基本。
发布于 2022-02-09 21:20:57
with data as (
select
CP_REF,
count(*) * 1.0 /
nullif(count(case when QUANTITY > 0 then 1 end), 0) as ADI,
stdevp(QUANTITY) / nullif(avg(QUANTITY), 0) as COV
from DF_ALL_DEMAND_BY_ROW_V
where parent is not null
group by CP_REF
)
select
CP_REF, ADI, COV,
case
when ADI < 1.32 and COV < 0.49 then 'Smooth'
when ADI >= 1.32 and COV < 0.49 then 'Intermittent'
when ADI < 1.32 and COV >= 0.49 then 'Erratic'
when ADI >= 1.32 and COV >= 0.49 then 'Lumpy'
else 'Smooth'
end as DEMAND
from data;重复检查您想要使用的是stdevp()而不是stdev。我希望我对统计学有更多的了解。
https://stackoverflow.com/questions/71055377
复制相似问题