mysql - 查询以获取 MySQL 上每个 item_id 的运行库存数
问题描述
我正在使用已经支持窗口功能的 MySQL 8.0。给定当前数据集,如下图所示, 数据集有 2 种项目
我需要获得每个股票走势的股票头寸。使用如下查询
> SELECT h.item, h.item_date, h.item_qty, h.item_flow,
> @stock := @stock + (h.item_qty*h.item_flow) AS running_stock FROM stock h CROSS JOIN (SELECT @stock := 0) r WHERE h.item = 1 ORDER
> BY h.item
我可以获得特定项目的库存
我的问题是: 如何修改我的查询,以便在单个查询中获得所有类型项目的结果?我不知道如何在每个组上重置 @stock 变量。
添加列不是解决方案,因为我需要在查询中解决这个问题。添加一列需要我计算每次在中间日期添加新库存变动(会有回溯交易)
解决方案
用作SUM()
解析函数:
SELECT
item,
item_date,
item_qty,
item_flow,
SUM(item_qty*item_flow) OVER (PARTITION BY item ORDER BY item_date) AS running_stock
FROM stock
ORDER BY
item,
item_date;
推荐阅读
- c++ - 如何在 Visual Studio 中编译为单个可执行文件
- reactjs - 客户端(React)从服务器接收部分数据(Sequelize)
- python - 保存 Self.Top_Grid.add_widget(Label(text=word)) 字符串并在另一个函数中重用?(基维)
- javascript - 容器元素作为参数来迭代其子元素 - Foreach
- python - 正确地将带有参数的函数分配给 Tkinter 中的按钮
- ssis - 从执行 sql 任务中提取结果集并将其存储在 excel 文件中?
- angular - Angular 中的 FullCalendar - 更改 MonthView 中的日期格式
- ruby - 如何在终端中执行这个看似基本的步骤,“将 Homebrew 添加到您的 PATH”?
- java - Hyperledger Fabric (1.4) EventHub 断开连接且没有详细错误
- uwp - Windows 10 20H2 开始菜单中的灰色背景