首页 > 解决方案 > 如何在数据中也存在增量增量的情况下仅选择减小的增量值?

问题描述

我有一个退货仓库。库存减少(订单)和增加(供应)。我只有股票价值,没有别的。假设我有这些数据按库存数量升序排序:

时间 股票
00:11 7144 <--- 当前
00:10 7280
00:09 7416 <--- 注意增加,意味着新的供应到了
00:08 2259
00:07 2333
00:06 2538
00:05 2999
00:04 3074
00:03 3104 <--- 开始

我需要导出不包括供应的订单,所以 max(qty)-min(qty) 不起作用,函数必须注意突然增加并只返回递减的增量。所以我希望给定值公式是:orders = (3104-2259)+(7416-7144)

您将如何处理这项任务?

谢谢。

标签: sql

解决方案


您可以连接两个“相邻”行并检查stock前一行的 是否大于stock后一行的 以查找您的订单。然后总结这些股票的差异。

假设该列time是唯一的,您可以使用以下查询:

SELECT SUM(t1.stock - t2.stock) AS sum_of_orders
FROM my_table t1
INNER JOIN my_table t2 ON t2.time > t1.time
                            AND NOT EXISTS(
                                SELECT 1
                                FROM my_table t3 
                                WHERE t3.time > t1.time AND t3.time < t2.time)
WHERE t1.stock > t2.stock;

推荐阅读