MySQL结果中的增量小计

时间:2017-11-22 18:27:21

标签: mysql mysql-variables

我需要计算 - 比方说 - 基于购买价格和日期(FIFO / LIFO)的商品价格。所以,假设我已经购买了这些产品:

  • 3 x ABC,2017-11-10 $ 100 $
  • 2 x ABC,2017-11-12 $ 80,
  • 5 x XYZ,2017-11-11 $ 120,
  • 7 x XYZ,2017-11-12 $ 110

首次购买的商品确定最终产品价格,因此ABC售出前3件商品的价格为100美元+,另外2件商品价格为80美元+。+ / p>

我现在需要的是一种缓存表,它应该是这样的:

SKU  price  max_qty
ABC    100        3
ABC     80        5
XYZ    120        5
XYZ    110       12

请注意,第三栏不包含购买数量,而是包含此价格所指数量的“上限”。这样我就可以通过max_qty >= basket_qty上的简单JOIN快速估算4项ABC的卖价。这很重要,因为读取的内容比写入此表的内容要多得多。

我正在努力的是以性能和资源成本的方式生成这样的表。我无法以“每个sku查询”方式执行此操作,因为一次可能有很多记录需要更新。我尝试过使用MySQL变量;

SELECT
    sku,
    price,
    @r := @r + qty AS max_qty
FROM
    (SELECT @r := 0) AS r
        JOIN
    warehouse_items
GROUP BY
    sku
ORDER BY
    sku, date_in

此结果集将很容易插入到缓存表中,但@r不会为结果中的每个新sku重置。

0 个答案:

没有答案