Php 如何获得每个月的总销售额

Php 如何获得每个月的总销售额,php,mysql,sql,Php,Mysql,Sql,我试图在一个名为Flot的jquery栏上显示每月的销售额&这是我的查询 $q = $db->getRows("SELECT date AS dates, COUNT(id) AS sales FROM orders WHERE date BETWEEN ? AND ? GROUP BY `date` ORDER BY `date`", PDO::FETCH_ASSOC, ["$year-01-01", "$year-12-31"]); 下面是我如何利用我的查询 $views =

我试图在一个名为Flot的jquery栏上显示每月的销售额&这是我的查询

$q = $db->getRows("SELECT date AS dates,
COUNT(id) AS sales FROM orders 
WHERE date BETWEEN ? AND ? 
GROUP BY `date` ORDER BY `date`", 
PDO::FETCH_ASSOC, ["$year-01-01", "$year-12-31"]);
下面是我如何利用我的查询

$views = array_fill(1, (int) 12, 0);

foreach ($q as $viewed) {
        $the_day = (int) substr($viewed['dates'], -2);  // get the day from the date

        $views[$the_day] = $viewed['sales'];
}
 return $views;
这是我的代码的响应

Array
(
    [1] => 0
    [2] => 0
    [3] => 0
    [4] => 0
    [5] => 0
    [6] => 0
    [7] => 0
    [8] => 0
    [9] => 0
    [10] => 0
    [11] => 0
    [12] => 0
    [0] => 1
)
它应该显示第9个月最后[0]=>1的值。
我在这个查询中哪里错了?

您可以直接从数据库获取值,例如:

  "SELECT 
      month(date) AS month
      , COUNT(id) AS sales 
      FROM orders     
  WHERE date BETWEEN ? AND ? 
  GROUP BY month(`date`) 
  ORDER BY month(`date`)"

尝试按monthdate分组,然后在“使用monthdate”对话框中选择。然后获取结果并输出。代码中您自己的注释说明了为什么这是错误的。基于主题行,我希望在其中的某个地方看到一个总和。您可以在GROUP BY子句中使用EXTRACTMOUNT FROM date。即使您使用where子句来限制一个特定的年份,我也会将extractYEAR FROM date添加到group by子句中,以防您需要列出几年。另见: