【问题标题】:How can I get the last 12 months sales subtotals in a table?如何在表格中获取过去 12 个月的销售小计?
【发布时间】:2013-04-11 15:53:32
【问题描述】:

到目前为止,我有这段代码,它为我提供了给定月份每种产品的小计。

 <?php
    include("dbaseconn.php"); 




    $query = "SELECT product, SUM(qty) FROM sh_orders GROUP BY product"; 

    $result = mysql_query($query) or die(mysql_error());

    // Print out result
    while($row = mysql_fetch_array($result)){
      echo "<table width='1050'>"  ;
      echo "<td width='400'>";
        echo "". $row['product']. " ";
      echo "</td>";
      echo "<td>";
      echo "". $row['SUM(qty)']. "" ;
      echo "</td>";
        echo "<br />";
    }
    ?>

表结构

CREATE TABLE IF NOT EXISTS `sh_orders` (
  `building` varchar(50) NOT NULL,
  `qty` varchar(5) NOT NULL,
  `product` varchar(50) NOT NULL,
  `order_id` bigint(5) NOT NULL AUTO_INCREMENT,
  `unik` varchar(50) NOT NULL,
  `order_date` varchar(25) NOT NULL,
  `co_id` varchar(20) NOT NULL,
  UNIQUE KEY `unik` (`unik`),
  UNIQUE KEY `id` (`order_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;

我想显示过去 12 个月的销售额 - SUM (qty) 为我执行此操作,但我需要分别查看每个月的每种产品及其当月的总销售额。我需要在一张表中显示每个月的每种产品和该月的总数

EXPECTED RESULT
Month:    January 2012    Feb 2012   Marc 2012
Product1: 124                105         76
Product2:  34                 23         56
Product3:  12                  5          6

我是新手,所以如果我问一百万个问题,请耐心等待。

【问题讨论】:

    标签: php


    【解决方案1】:
    SELECT product,sum(qty),DATE_FORMAT(product_month, '%Y-%m') as month 
    FROM sh_orders 
    WHERE product_month BETWEEN DATE_SUB(now(), INTERVAL 12 MONTH) 
    AND now() group by  DATE_FORMAT(product_month, '%Y%m'),product
    

    每个产品在同一个月和不同的日子都有一些数量。第一个按月分组,每个月汇总相同的产品数量。按产品二组,避免同月产品重复

    【讨论】:

    • 每个产品都有一定数量的同月不同天数。第一组按月,每个月汇总相同的产品数量。按产品二组,避免同月产品重复
    • 让我将解释添加到答案本身。
    • 我正在尝试的代码如下:我使用 SUM 获得单位的总销售额, qty 字段是售出的单位数,然后我使用 GROUP 以便当 SUM 计算为一个产品,然后打印产品名称和数量,然后转到下一个产品并重复该过程,直到计算完所有产品。希望这是可以理解的。
    【解决方案2】:

    将您的查询更改为

      $query = "SELECT product, SUM(qty) FROM sh_orders where Product_month between '2011-01-01' and '2012-01-01' GROUP BY product"; 
    

    【讨论】:

      【解决方案3】:

      这是您需要的查询:

      SELECT order_date, product, SUM(qty) as sum_qty
      FROM sh_orders 
      WHERE order_date > DATE_SUB( CURDATE(), INTERVAL 1 YEAR)
      GROUP BY YEAR(order_date), MONTH(order_date), product
      

      sqlfiddle


      结果是这样格式的数组:

      array(
          array(
              'order_date' => '2012-09-02',
              'product'    => 'p2',
              'sum_qty'    => '2'
          ),
          array(
              // etc...
          )
      );
      

      您只需遍历它并将结果显示为表格。如果您在创建表格时遇到问题,最好在此处接受答案并提出新问题,因为它与htmlloopsarrays 更相关。

      【讨论】:

      • 好的,到目前为止的反应非常好,谢谢大家。我想也许我没有清楚地解释我想做什么。我想得到一份报告,给出每个月每个产品单位的销售额。因此,例如 Jan2012 Product1 23、Product 3 12 然后 2012 年 2 月 Product1 35、Product3 42 等等。我试图发布一张我想要实现的图片,但它不接受图片上传/。我可能还需要帮助来格式化结果的外观。
      • 是的,谢谢,我试过了,现在查询可以工作了。正如我在原始问题中所展示的那样,我需要将其放入报告格式中,有什么想法可以做到这一点吗?
      猜你喜欢
      • 2015-02-20
      • 2020-05-29
      • 2016-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多