平均值随时间的演变

问题描述 投票:0回答:1

我有一个雪花表,可以跟踪每个 ID 随着时间的推移的评分级别。我想找到每天的运行或累积平均值来跟踪公司随时间的进展。随着评级级别随着时间的推移而更新,一个 ID 可以有多次迭代。

我想知道如何在考虑迭代的同时计算运行平均值。例如,ID 号 T390-23 有两次迭代。我想将第一个迭代评级值包含在运行平均值中,直到它被更新,然后我想从那时起忽略它并使用第二个迭代,直到第三个迭代出现。

Sample data Sample data with the expected output

我能够成功计算运行平均值,但当包含具有两次或多次迭代的 ID 时,它会给出不需要的结果。

sql snowflake-cloud-data-platform calculation
1个回答
0
投票

我正在考虑使用标量查找来计算将每个评级与到期日期相关联后的平均值。我无权访问 Snowflake,因此所写的查询可能存在一些小的语法或日期格式问题:

with data as (
    select *,
        lead(assessment_date, 1, '2099-12-31') over (partition by id_number order by iteration) as valid_until
    from T
)
select *,
    (select avg(d.rating_level) from data d
     where d.assessment_date < t.assessment_date and t.assessment_date < d.valid_until) as running_average
from T t;
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.