假设我有一个 order_items
表来跟踪 items
的销售情况:
CREATE TABLE `items` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`stock` int(11) NOT NULL,
`price` decimal(8,2) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `order_items` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`order_id` int(10) unsigned NOT NULL,
`item_id` int(10) unsigned DEFAULT NULL,
`quantity` int(11) NOT NULL,
`price` decimal(8,2) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
KEY `order_items_order_id_index` (`order_id`),
KEY `order_items_item_id_index` (`item_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
我如何创建一个查询,以根据特定时间段内的过去销售情况返回估计的库存数量消耗率?
例如,如果 item_id
1
在 2 周内售出了一半的库存(基于 created_at
时间戳),我该如何将其放入一个查询会告诉我再过 2 周应该没有剩余数量?
是否也可以在单个查询中按时间跨度对耗尽率进行分组?
这是我的 fiddle : http://sqlfiddle.com/#!2/c568f
最佳答案
这是一个基本查询,可让您了解已售商品的数量以及售出商品所用的天数:
SELECT Item_ID
,SUM(Quantity) As TotalSold
,DATEDIFF(MAX(Created_AT),MIN(Created_At)) AS Days_To_Sell
FROM order_items
GROUP BY Item_ID
如果您想要更复杂的分析而不是简单的耗尽率,您可能想要合并一个日历表,以便您可以轻松地按项目分割给定时间段内的所有销售额,但您也可以将日期部分添加到您的 SELECT
和 GROUP BY
,如 WEEK()
、MONTH()
等
演示:SQL Fiddle
关于mysql - 根据以前的销售预测库存消耗率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26392253/