如何解决当前日期和前 30 天的不同计数
我有一个数据集,我正在尝试将这些数据集重新连接起来以获取前 30 天的计数。初始表具有为一天提供的不同 id 计数。我的最终目标是通过自身加入来获取当前天数和前 x(当前示例是 30)天数,这样我就可以计算从第 1 天到第 30 天的滚动平均值。
到目前为止,结构已经确定,但不确定是否最好。
原表是
Day. id. group
12/1/2020. 1. A
12/2/2020. 1. A
12/3/2020. 2. B
12/3/2020. 3. B
12/3/2020. 4. B
12/4/2020. 1. A
12/4/2020. 2. A
12/4/2020. 3. A
12/4/2020. 4. A
.
.
.
1/30/2021. 1. A
我使用原始表每天做一个不同的计数
Day. Count_prev30. group
12/1/2020. 83. A
12/2/2020. 93. A
12/3/2020. 103. B
12/4/2020. 126. A
.
.
.
1/4/2021. 166. A
目前我拿着这张表,也做了一个 date_sub(partition_date_et,29) partition_date_et_30 并有另一套
Day. Day_previous_30 Count_current. group
1/1/2021. 12/01/2020 123. A
1/2/2021. 12/02/2020 133. A
1/3/2021. 12/03/2020 143. B
1/4/2021. 12/04/2020 166. A
.
.
.
1/31/2021. 12/31/2020 186. A
我加入这些数据集,所以我使用 Day 和 Day_previous_30
Day. Day_previous_30 Count_current. count_prev30 group
1/1/2021. 12/01/2020 123. 83 A
1/2/2021. 12/02/2020 133. 93 A
1/3/2021. 12/03/2020 143. 103 A
1/4/2021. 12/04/2020 166. 126 B
.
.
.
.
infinite dates
我不确定这是否是在我的聚合中获取当前天数和当前上一个日期的最佳方法对于 2021 年 1 月 1 日,我的计数平均值是 Count_current + Count_prev30 /2。
只是想看看如果有更好的方法,其他人将如何实现这一目标。我不认为有一个计数不同的窗口函数,例如 sum over。
解决方法
假设您每天都有数据,您可以使用:
select day,count(*),sum(count(*)) over (order by day range between 29 preceding and current row)
from t
group by day;
您的代码显示了一个 group
列,但问题根本没有提到它,所以这只是忽略它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。