【问题标题】:Calculating Average Monthly Consumption计算平均每月消耗量
【发布时间】:2019-04-19 16:05:06
【问题描述】:

我正在使用 Laravel 4 进行自我改进库存管理项目,但无法找出执行平均每月消耗量 (AMC) 计算的最佳方法。

我有两个表,即 commodities 表 (id,item_name,price) 和 stockcard (id, item_id, qty_in, qty_out,transaction_date),我应该从中得出 AMC 计算。

FORMULA = (sum of current month's qty_out + sum of previous two month's qty_out) / 3 

谁能帮我解释一下如何用普通的 PHP 和 mysql 来解决这个问题?

【问题讨论】:

标签: php mysql laravel laravel-4


【解决方案1】:

例如,您应该能够使用条件聚合来做到这一点

   drop table if exists t;

create table t(item int,qty_out int , dt date);

insert into t values
(1,1,'2018-09-01'),(1,1,'2018-10-01'),(1,1,'2018-11-01');

select item,
         sum(case when year(dt)*12 + month(dt) = year(now()) * 12 + month(now()) then qty_out else 0 end) thismm,
         sum(case when year(dt)*12 + month(dt) = (year(now()) * 12 + month(now()) -1) or
                            year(dt)*12 + month(dt) = (year(now()) * 12 + month(now()) -2) then qty_out else 0 end) last2mm,
         (sum(case when year(dt)*12 + month(dt) = year(now()) * 12 + month(now()) then qty_out else 0 end) +
         sum(case when year(dt)*12 + month(dt) = (year(now()) * 12 + month(now()) -1) or
                            year(dt)*12 + month(dt) = (year(now()) * 12 + month(now()) -2) then qty_out else 0 end)
         ) / 3  amc
from t
where year(dt)*12 + month(dt) >= (year(now()) * 12 + month(now()) -2)
group by item ;
+------+-----------+-------+--------+
| item | thismonth | last2 | amc    |
+------+-----------+-------+--------+
|    1 |         1 |     2 | 1.0000 |
+------+-----------+-------+--------+
1 row in set (0.01 sec)

请注意转换为月份数字以简化日期超过年末的位置。 当然,如果您正在寻找 3 个月的滚动平均值,那就另当别论了。

【讨论】:

  • 你是一个救生员。这正是我一直在寻找的并且完美地工作
  • @O'Byron 如果答案对您有所帮助。您应该考虑将其标记为已接受的答案(单击答案旁边的复选标记将其变为绿色)。请参阅:How to accept an answer for closure。你也因此获得积分。谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-07
  • 2021-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多