MYSQL股票缺口预测
很长一段时间以来,我一直在绞尽脑汁想办法让它发挥作用,由于它如此具体,我似乎无法在StackOverflow的其他地方找到答案。如有任何答复或建议,将不胜感激 我正在制作一份关于库存管理和消费的报告。使用当前库存和每日库存消耗的值计算此值很容易。。。但当我们将进货加入到流程中时,事情变得非常复杂让MYSQL在每只股票达到0的第一天返回,这让我感到茫然。 例如,假设我们在卖水果,我们有三张桌子,水果,水果,订单 果 水果卖了吗MYSQL股票缺口预测,mysql,sql,Mysql,Sql,很长一段时间以来,我一直在绞尽脑汁想办法让它发挥作用,由于它如此具体,我似乎无法在StackOverflow的其他地方找到答案。如有任何答复或建议,将不胜感激 我正在制作一份关于库存管理和消费的报告。使用当前库存和每日库存消耗的值计算此值很容易。。。但当我们将进货加入到流程中时,事情变得非常复杂让MYSQL在每只股票达到0的第一天返回,这让我感到茫然。 例如,假设我们在卖水果,我们有三张桌子,水果,水果,订单 果 水果卖了吗 |---------------------|------------
|---------------------|------------------|------------------|------------------|
| id | fruit_id | sold_per_day | day_sold |
|---------------------|------------------|------------------|------------------|
| 1 | 1 | 101 | 1585695600 |
|---------------------|------------------|------------------|------------------|
| 2 | 2 | 445 | 1585695600 |
|---------------------|------------------|------------------|------------------|
| 3 | 3 | 214 | 1585782000 |
|---------------------|------------------|------------------|------------------|
| 4 | 1 | 512 | 1585782000 |
|---------------------|------------------|------------------|------------------|
水果订单
|---------------------|------------------|------------------|
| id | arriving | fruit_id |
|---------------------|------------------|------------------|
| 1 | 1592607600 | 1 |
|---------------------|------------------|------------------|
| 2 | 1586905200 | 3 |
|---------------------|------------------|------------------|
| 3 | 1590534000 | 2 |
|---------------------|------------------|------------------|
| 4 | 1588287600 | 3 |
|---------------------|------------------|------------------|
| 5 | 1593126000 | 1 |
|---------------------|------------------|------------------|
| 6 | 1592607600 | 2 |
|---------------------|------------------|------------------|
到目前为止我有
SELECT SUM(fruit_sold.sold_per_day) / 2 AS consumption, fruit.fruit
FROM fruit_sold
LEFT JOIN fruit
ON fruit_sold.fruit_id = fruit.id
GROUP BY fruit_sold.fruit_id
我如何返回每个水果的库存用完前的天数(考虑到到货订单及其到货日期)
我们想退回以下物品:
|---------------------|------------------|------------------|------------------|
| id | fruit | consumption | days_until_gone | |
|---------------------|------------------|------------------|------------------|
| 1 | apples | 306.5 | 2 |
|---------------------|------------------|------------------|------------------|
| 2 | oranges | 222.5 | 16 |
|---------------------|------------------|------------------|------------------|
| 3 | pears | 107 | 3 |
|---------------------|------------------|------------------|------------------|
您可以使用
union all
、聚合和窗口功能获取每天的数字:
select fruit_id, day_sold, sum(sold_per_day), sum(orders),
sum(sum(sold_per_day - orders)) over (partition by fruit_id order by day_sold) as net
from ((select fruit_id, day_sold, sold_per_day, 0 as orders
from fruit_sold
) union all
(select fruit_id, as day_sold, 0 as sold_per_day, count(*) as orders
from fruit_sold
group by fruit_id, day_sold
)
) f
group by fruit_id, day_sold;
我不是100%了解这如何适用于您的样本数据,但它似乎基本上提供了您想要的信息。请显示您想要的结果。你的约会在我看来不像是约会。谢谢你回复我。我对它进行了编辑,以显示我想要的结果类型。日期是时间戳。遗憾的是,这会导致一个错误
#1064-您的SQL语法有一个错误;查看与您的MySQL服务器版本对应的手册,了解使用near'(按水果分割,按天排序,按天出售)作为net from的正确语法((在第2行选择水果id,天溶胶),但我认为在看不到结果的情况下,它走的是正确的道路。@bowser404…这需要MySQL 8+。
select fruit_id, day_sold, sum(sold_per_day), sum(orders),
sum(sum(sold_per_day - orders)) over (partition by fruit_id order by day_sold) as net
from ((select fruit_id, day_sold, sold_per_day, 0 as orders
from fruit_sold
) union all
(select fruit_id, as day_sold, 0 as sold_per_day, count(*) as orders
from fruit_sold
group by fruit_id, day_sold
)
) f
group by fruit_id, day_sold;