列表项
我有这种类型的记录:
... | user_id | ... | 日期 | ... | current_balance | ... |
---|---|---|---|---|---|---|
... | 1 | ... | 2021-06-30 05:21:03 | ... | 20.95629595 | ... |
... | 1 | ... | 2021-07-02 10:17:25 | ... | 21.95629595 | ... |
... | 1 | ... | 2021-07-02 11:07:23 | ... | 20.95629595 | ... |
... | 14 | ... | 2021-07-02 11:40:34 | ... | 1.42046290 | ... |
... | 1 | ... | 2021-07-02 11:59:15 | ... | 21.87674098 | ... |
... | 1 | ... | 2021-07-02 12:06:12 | ... | 22.79712675 | ... |
... | 1 | ... | 2021-07-02 12:24:11 | ... | 21.79712675 | ... |
... | 14 | ... | 2021-07-02 12:37:11 | ... | 11.42046290 | ... |
... |
我的目标是在 MySQL 中实现这个结果:
user_id | 日期 | 平均 |
---|---|---|
1 | 2021-06-30 | 20.956295950000 |
1 | 2021-07-01 | 20.956295950000 |
1 | 2021-07-02 | 17.460644597143 |
1 | 2021-07-03 | 17.460644597143 |
1 | 2021-07-04 | 17.460644597143 |
1 | 2021-07-05 | 17.460644597143 |
...直到下一个日期它有不同的平均值 |
如果计算平均值之后的下一个日期没有任何值,它将用之前的平均值填充。
这是我当前的查询:
SELECT c.date,AVG(IFNULL(a.current_balance,0)) AS balance FROM users_balancemaster a
RIGHT JOIN calendar c ON c.date= DATE(a.ondate) GROUP BY c.date
但它在没有平均值的日期返回零。
+---------+------------+-----------------+
| user_id | date | average |
+---------+------------+-----------------+
| 1 | 2021-06-30 | 20.956295950000 |
| 1 | 2021-07-01 | 0.000000000000 | <<--
| 1 | 2021-07-02 | 17.460644597143 |
| 1 | 2021-07-03 | 0.000000000000 | <<--
| 1 | 2021-07-04 | 0.000000000000 | <<--
| 1 | 2021-07-05 | 0.000000000000 | <<--
....
答案 0 :(得分:1)
您使用的版本我不知道,所以我选择了 MySQL 5.7。
df1 <- mtcars[1:4]
combn(names(df1), 2, function(x){
d <- df1[x]
names(d) <- x
d
}, simplify = FALSE)