выберите по сумме значений столбцов, сгруппированных по дням - PullRequest
1 голос
/ 09 июня 2019

У меня есть таблица со столбцами datetime, стоимостью заказа и количеством штук для каждого выпущенного заказа. Дата и время в стандартном формате datetime 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
    }
}
?>

Теперь я должен сделать два разных отчета, по одному на каждый день и по одному на каждый месяц, и каждый должен показать:
- количество заказов
- сумма значений заказа
- сумма количества штук
Каким должен быть запрос, чтобы получить количество заказов в день и сумму значений и штук в день?

Поискал на сайте похожие проблемы, но не нашел поста с ясным решением для моих нужд.

1 Ответ

2 голосов
/ 09 июня 2019

В первом случае вам нужно сгруппировать по дням с помощью функции 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...