sql - 轧制产品剩余间隙填充
问题描述
产品在某个日期的剩余按产品操作(收入和支出)计算,例如货币交易的余额。
我有一个滚动产品操作的物化视图,其中投影到相应产品的每个操作都保留在通过窗口函数(ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
)执行操作的那一刻。
但是,如果我想获得当日的产品遗骸,并且在这一天没有进行任何产品操作,那么我将无法接收遗骸。
如何填补零产品运营数天的空白?如何以最低的成本高效地完成它?有没有其他方法可以有效地获得产品残留?
解决方案
在 Postgres 中,您可以使用以下方式填写数据generate_series()
:
select p.product_id, coalesce(t.created_at, gs.dte),
coalesce(volume, 0),
coalesce(remaining_volume, 0)
from (select product_id, min(created_at)::min_ca, max(created_at) as max_ca
from t
group by product_id
) p cross join lateral
generate_series(min_ca::date, max_ca::date, interval '1 day') gs(dte) left join
t
on t.product_id = p.product_id and
t.created_at::date = gs.dte;
推荐阅读
- excel - PrintPreview 不一致的行为
- wordpress - 向 Revolution Slider 添加 Webp 支持
- python - 无法使用 Python 3.8 将 BSTR 指针传递给 COM 对象
- android - 启动模拟器时找不到adb
- c# - 在 IIS 中托管的活动目录 c# 网站
- quartz.net - 使用 Quartz 为每两周在周四和周五运行的任务创建一个 cron express
- python - tensorflow 范围在 Jupyter 实验室中丢失
- spring-boot - 使用基本身份验证和无状态会话的无效会话
- android-studio - 无法安装英特尔 HAXM。尽我所能
- sql - 将列值向左切换