Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL股票缺口预测_Mysql_Sql - Fatal编程技术网

MYSQL股票缺口预测

MYSQL股票缺口预测,mysql,sql,Mysql,Sql,很长一段时间以来,我一直在绞尽脑汁想办法让它发挥作用,由于它如此具体,我似乎无法在StackOverflow的其他地方找到答案。如有任何答复或建议,将不胜感激 我正在制作一份关于库存管理和消费的报告。使用当前库存和每日库存消耗的值计算此值很容易。。。但当我们将进货加入到流程中时,事情变得非常复杂让MYSQL在每只股票达到0的第一天返回,这让我感到茫然。 例如,假设我们在卖水果,我们有三张桌子,水果,水果,订单 果 水果卖了吗 |---------------------|------------

很长一段时间以来,我一直在绞尽脑汁想办法让它发挥作用,由于它如此具体,我似乎无法在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;