【发布时间】:2019-04-11 22:05:33
【问题描述】:
我想加入两个表,其中一个表缺少每个货币组的一行。
表格:
按月汇总的本地货币交易。(交易表)
Date Currency spend
2019-01-01 EUR 100
2019-02-01 EUR 200
2019-03-01 EUR 500
2019-04-01 EUR 214
2019-01-01 JYP 3200
2019-01-01 JYP 1534
2019-02-01 JYP 1534
2019-03-01 JYP 1534
2019-04-01 JYP 1534
按月汇率(exchange_data 表)
Month Currency Average Monthly rate
2019-01-01 EUR 1.2
2019-02-01 EUR 1.3
2019-03-01 EUR 1.4
2019-01-01 JYP 101
2019-02-01 JYP 102
2019-03-01 JYP 103
2019-01-01 USA 1
2019-02-01 USA 1
2019-03-01 USA 1
我想执行联接以获取所有美元交易。问题是当月(2019-04-01)的汇率不可用。所以当月的所有交易在加入后都返回NULL。
我已经设法在 R 中解决了它,但是有没有办法用 SQL 来解决它? 我一直在尝试使用窗口函数但没有成功
LAG(rate,1) OVER (PARTITION BY currency ORDER BY month)
R 中的解决方案:假设速率保持不变。
library(lubridate)
library(dplyr)
exchange_previous <- exchange_data[exchange_data$month == floor_date(today(),"month") %m-% months(1),]
exchange_previous$month <- exchange_previous$month %m+% months(1)
exchange_data<-rbind(exchange_data,exchange_previous)
final <- transactions %>%
left_join(exchange_data, by = c("currency" = "name", "floor_date" = "month"))
Then simply multiply
【问题讨论】:
-
@GordonLinoff postgresql
-
请为不使用 R 的 Postgres 用户发布所需的结果或 R 代码的输出。
-
所有的 JPP 都意味着 JYP 吗?如果没有汇率,你会用上个月的吗?
-
@xavier 是的,我的错。 JPP是JYP。是的,上个月的那个
标签: sql r postgresql window-functions