Spark/SQL-在没有ID列的情况下,对周\日最后5/n天的计数求和

Spark/SQL-在没有ID列的情况下,对周\日最后5/n天的计数求和,sql,scala,apache-spark,Sql,Scala,Apache Spark,下表列出了前3列,即计数、周开始、周结束 我将Spark与SQL和API/Scala一起使用,需要显示第4列(五周计数),它是当前周计数+最近4周计数的总和 我尝试了带范围的窗口函数,但在没有ID列的情况下失败了。 你能看一下并提出建议吗?如果你需要更多信息,请告诉我 计数 周开始 周末 五周 572 2021-03-13 2021-03-19 336288 106065 2021-03-06 2021-03-12 371623 82878 2021-02-27 2021-03-05 39397

下表列出了前3列,即计数、周开始、周结束

我将Spark与SQL和API/Scala一起使用,需要显示第4列(五周计数),它是当前周计数+最近4周计数的总和

我尝试了带范围的窗口函数,但在没有ID列的情况下失败了。 你能看一下并提出建议吗?如果你需要更多信息,请告诉我

计数 周开始 周末 五周 572 2021-03-13 2021-03-19 336288 106065 2021-03-06 2021-03-12 371623 82878 2021-02-27 2021-03-05 393972 59128 2021-02-20 2021-02-26 475994 87645 2021-02-13 2021-02-19 655908 35907 2021-02-06 2021-02-12 637359 128414 2021-01-30 2021-02-05 620200 164900 2021-01-23 2021-01-29 576378 239042 2021-01-16 2021-01-22 508091 69096 2021-01-09 2021-01-15 459419 18748 2021-01-02 2021-01-08 495833 84592 2020-12-19 2020-12-25 530895 96613 2020-12-12 2020-12-18 486940 190370 2020-12-05 2020-12-11 641346 105510 2020-11-28 2020-12-04 502672 53810 2020-11-21 2020-11-27 556047 40637 2020-11-14 2020-11-20 693209 251019 2020-11-07 2020-11-13 877883 51696 2020-10-31 2020-11-06 687154 158885 2020-10-24 2020-10-30 756603 190972 2020-10-17 2020-10-23 597718 225311 2020-10-10 2020-10-16 406746 60290 2020-10-03 2020-10-09 181435 121145 2020-09-26 2020-10-02 121145
如果为WeekNumber添加一列,则可以执行以下操作:

Select Count,
Week_start,
Week_end,
WeekNumber,
(Select SUM(count) from t where WeekNumber between t.WeekNumber and t.WeekNumber - 4)
From Table t

假设每周有一行,则使用窗口函数:

select t.*,
       sum(count) over (order by week_start rows between 4 preceding and current row) as five_week_count
from t;

如果您没有找到查找WeekNumber的好方法,我可以编辑我的代码以满足您的需要。