选择按天分组的列值总和

时间:2019-06-09 10:20:12

标签: php mysql date sum

我有一个表,其中包含列日期时间,订单值和每个发出的订单的件数。日期时间采用标准的日期时间mysql格式。

要获得订单的总和,我有一个类似这样的查询:

$sqlsum = "SELECT SUM(order_value) FROM orders";
if (mysqli_query($conn, $sqlsum)) {
    $resultsum = mysqli_query($conn, $sqlsum);
    while($row = mysqli_fetch_assoc($resultsum)) {
        $total_sales = $row['SUM(order_value)'];

        // and here I use the value in a simple report
    }
}

要获得所有单笔订单的报告,通常我会这样:

<?php

$sql = "SELECT * FROM orders";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
    while($row = mysqli_fetch_assoc($result)) {
        $order_time = $row["datetime"];
        $order_value = $row["order_value"];
        $pieces_number = $row["pieces"];

        // and here I use the results in a detailed report
    }
}
?>

现在我必须做两个不同的报告,每天一个,每个月一个,并且每个报告都必须显示:
-订单数
-订单值之和
-件数之和
该查询如何获取每天的订单计数以及每天的价值和件数之和?

在Google网站上搜索了类似的问题,但找不到适合我需要的明确解决方案的帖子。

1 个答案:

答案 0 :(得分:2)

在第一种情况下,您需要使用DATE()函数按天分组:

SELECT 
  DATE(datetime) day, 
  COUNT(*) orderscounter,
  SUM(order_value) valuesum,
  SUM(pieces) piecessum
FROM orders
GROUP BY day

在第二种情况下,您需要使用YEAR()MONTH()函数按年/月分组:

SELECT 
  YEAR(datetime) year,
  MONTH(datetime) month, 
  COUNT(*) orderscounter,
  SUM(order_value) valuesum,
  SUM(pieces) piecessum
FROM orders
GROUP BY year, month