sql table 按日期 Snowflake 汇总累积观看次数

Summing cumulative views in an sql table by date Snowflake

我有一个 sql table 以日期、参考编号和视图作为一列,我试图根据按参考编号分组的日期为每一行添加视图。

我有 3 天的数据,比如 3 月 27 日、28 日和 29 日,我有多个参考号,但让我们取 1 个参考号:123。我想添加该参考的观看次数从 27 到 28,并在 28 的同一行中的新列中生成结果。然后将 28 中的结果数字添加到 29 视图中,并将其放入 29 的同一行中的新列中。

create or replace view acq.vw_cumulative(DATE, REF, VIEWS, URL, CUML_VIEWS)
as
SELECT DATE, REF, VIEWS, URL, sum(VIEWS) WHERE DATE > DATE - 1 OVER (PARTITION BY REF) FROM ACQ.CUMULATIVE;

这是我开始的内容,但它只是 returns 总和并附加到所有 3 行

所以使用这个 CTE 只是为了(对我而言)“假数据”的简单性

WITH data_table(date, ref, views) as (
    SELECT * FROM VALUES
        ('2022-03-27'::date, 123, 100),   
        ('2022-03-28'::date, 123, 20),   
        ('2022-03-29'::date, 123, 3),   
        ('2022-03-27'::date, 44, 10),   
        ('2022-03-28'::date, 44, 200),   
        ('2022-03-29'::date, 44, 32)   
)

下面的SQL都可以用,基本上你的SUM需要做的稍微不一样。

SELECT d.date,
    d.ref,
    d.views,
    SUM(d.views) OVER (partition by d.ref order by d.date) as CUMULATIVE
FROM data_table AS d
order by 2,1;

我们将得到所有先前视图值的总和。

DATE REF VIEWS CUMULATIVE
2022-03-27 44 10 10
2022-03-28 44 200 210
2022-03-29 44 32 242
2022-03-27 123 100 100
2022-03-28 123 20 120
2022-03-29 123 3 123

因此可以将其插入您的 VIEW(当您添加 URL 和其他对您重要的位时)