sql - SQL查询以跟踪新订单或旧订单中的余额变化,没有日期
问题描述
我有一个类似于以下记录的表
order_id | order_balance |
---|---|
34 | 400 |
35 | 200 |
36 | 100 |
一旦插入了 order_id 即 order_id = 34。当 order_balance 更改时,不会插入新记录(不是追加),余额本身会在同一记录中更新。所以说order_id=34 的余额明天变为300。明天看表时。
order_id = 34 的记录将如下所示:
order_id | order_balance |
---|---|
34 | 300 |
所以我想建立一个表来跟踪 order_ids 和 order_balances 是新插入的,或者在最后一天(或时间段,可能是小时、天、分钟等)发生了余额变化。我正在使用 pyspark 和 spark sql。
我的第一个想法是有一个表格来记录昨天的余额,然后将它们与今天的余额进行比较。但是,这将是 spark 作业的两次单独运行,并且需要我在 spark 中的作业运行之间保留该表。这甚至可能吗?
解决方案
您是否尝试过在插入/更新后触发?然后它将根据您想要的规则插入或更新新的“control_table”。
或者,如果我理解正确,你可以有这样的视图:
CREATE VIEW v_changed_orders_last_day AS
SELECT
order_id,
order_balance,
order_updated_date
FROM orders
WHERE order_updated_date IS NULL
OR order_updated_date >= sysdate()-1;
推荐阅读
- python - 为什么 matplotlib.figure.Figure 对象存储来自以下 pandas.DataFrame.plot 命令的数据?
- oracle - 应打印带有复选框的选定项目
- c++ - 如何使用函数(而不是构造函数)将派生类对象分配给基类指针
- testing - TestCafe 无头定位参数
- yacc - 正确输入后无法继续解析
- python - 使用 Python3 / AttributeError 抓取网站:“NoneType”对象没有属性“文本”
- postgresql - 为什么 Postgresql 会为计数请求提供行数的答案?
- timezone - Azure 数据资源管理器中的时区感知查询
- node.js - 无法使用 PM2 创建节点脚本集群
- sails.js - 我在 SailsJs 上使用 waterline-orm 模型方法“.archive()”有一个“UsageError”