我有一个表,其中包含列日期时间,订单值和每个发出的订单的件数。日期时间采用标准的日期时间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网站上搜索了类似的问题,但找不到适合我需要的明确解决方案的帖子。
答案 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