SQL/Pyspark查询以组合同一组的聚合中的每个值
假设我有一个类似此
ID | 日期 | 值 |
---|---|---|
1 | 01/04 | 7 |
1 | 01/03 | 2 |
1 | 01/02 | 10 |
1 | 01/01 | 4 |
2 | 01/01/04 | 7 |
2 | 01/01/03 | 7 |
2 | 01/02 | 8 |
2 | 01/01 | 5 |
我要获得的是另一个表,该表具有相同数量的记录,每个记录都有一个额外的列,其中最后一个 n
记录的平均值具有相同的 id
这只是在给定记录之前的日期。例如,如果 n = 2
对于第二行,则使用 id = 1
和 date = 01/03
我想拥有在具有相同 ID
的两个行中 value
的平均值,并且只是 01/03
之前的两个日期(10+4)/2 = 7。因此,对于此特定记录,我将拥有:
ID | 日期 | 值 | AVG最后2个记录相同组 |
---|---|---|---|
1 | 01/04 | 7 | 6 |
1 | 01/01/03 | 2 | 7 |
1 | 01/02 | 10 | 4 |
1 | 01/01 | 4 | NENULL |
2 | 01/04 | 7 | 7.5 7.5 7.5 7.5 |
2 | 01/03 | 7 | 6.5 |
2 | 01/02 | 8 | 5 |
2 | 01/01 | 5 | 我的问题 |
是如何以关系(SQL)逻辑实现此问题(Pyspark中的实现也有很大帮助)。
提前致谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用,通过
ID
进行分区,并通过date
进行排序。设置
Pyspark(DataFrame API)
SQL
You can do so with a window function, partitioning by
id
and sorting bydate
.Setup
PySpark (dataframe API)
SQL