SQL-запрос для расчета общего количества заказов в день? - PullRequest
6 голосов
/ 15 июля 2009

Может ли кто-нибудь опубликовать SQL-запрос для расчета общего количества заказов в день?

Вот столбцы вместе с их данными в моей базе данных.


order_id    order_placed_date   order_total  
 - 1    12/30/2008 12:06:24 AM  2499.99  
 - 2    2/3/2009 1:57:17 AM 199.99  
 - 3    2/3/2009 1:58:27 AM 449.99  
 - 4    5/3/2009 1:58:48 AM 299.99  
 - 5    6/3/2009 2:00:31 AM 359.94
 - 6    6/3/2009 2:01:47 AM 279.97
 - 7    6/3/2009 2:02:31 AM 1359.94
 - 9    7/1/2009 2:21:18 PM 5099.98
 - 10   7/1/2009 2:21:36 PM 2621.97
 - 11   7/2/2009 2:22:18 PM 2169.95
 - 12   7/3/2009 2:23:29 PM 2249.95
 - 13   7/4/2009 2:24:24 PM 5509.95
 - 14   7/5/2009 12:15:17 AM    449.99
 - 15   7/5/2009 12:18:08 AM    2299.99
 - 16   7/5/2009 12:18:28 AM    3999.99
 - 17   7/5/2009 12:18:45 AM    1939.99
 - 18   7/5/2009 11:58:07 PM    39.99
 - 19   7/6/2009 12:00:42 AM    1899.99
 - 20   7/6/2009 12:01:00 AM    3999.99
 - 21   7/7/2009 12:06:38 AM    199.99
 - 22   7/7/2009 12:08:31 AM    1143.97
 - 23   7/7/2009 12:09:13 AM    449.99
 - 26   7/15/2009 1:30:03 PM    5469
 - 27   7/15/2009 2:14:24 PM    329.97
 - 28   7/15/2009 6:18:47 PM    5469
 - 29   7/15/2009 10:17:36 PM   39.99

Например, в феврале 2009 года 2 заказа

 - 2    2/3/2009 1:57:17 AM     199.99  
 - 3    2/3/2009 1:58:27 AM     449.99  

Мне нужен SQL-запрос, который вычислит и покажет общую сумму за день. Таким образом, на 3 февраля 2009 года общая сумма составит 699,98

Мне нужно отобразить общую сумму заказа за день на графике

Если было бы проще сделать это с помощью PHP, также упомяните об этом.


UPDATE:
Я хотел бы уточнить, что мне нужна общая сумма в день в текущем месяце. Я забыл упомянуть об этом в моем первоначальном вопросе.

Итак, я обновил запрос Питера, чтобы получить Общее количество заказов + Общая сумма за день в этом месяце.

Пожалуйста, дайте мне знать, если это нужно исправить или есть лучший и короткий способ сделать это.


SELECT date(order_placed_date), COUNT(order_id) AS num_orders, SUM(order_total) AS daily_total
FROM orders
WHERE order_placed_date>=date_sub(current_date, INTERVAL 31 DAY)
GROUP BY date(order_placed_date)

Ответы [ 5 ]

9 голосов
/ 15 июля 2009

Функция MySQL date () вернет значение DATEIME или TIMESTAMP без информации о часах / минутах / секундах - это означает, что вы снизите точность до дня значения.

Так что все, что вам нужно сделать, это сгруппировать по ним, а затем добавить свои агрегатные функции в нужные столбцы.

SELECT date(order_placed_date)
     , COUNT(id) AS num_orders
     , SUM(order_total) AS daily_total
  FROM [Table]
 GROUP BY date(order_placed_date)
1 голос
/ 15 июля 2009
SELECT date(order_placed_date)
     , COUNT(id) AS num_orders
     , SUM(order_total) AS daily_total
  FROM orders
 GROUP BY 1

Просто скопировал ответ Питера, но изменил его, чтобы он работал. Плюс ярлык группы.

0 голосов
/ 09 февраля 2017
select YEAR(datename(year,ORDER_DATE)) as YEARS,
       count(ORDER_nO) as [NO(ORDER)]
       from ProductOrder
       group by YEAR(datename(year,ORDER_DATE))
0 голосов
/ 15 июля 2009

Я не знаю, что это за MySQL , но в MSSQL это было бы так

select 
datepart(yyyy, order_placed_date), 
datepart(mm, order_placed_date), 
datepart(dd, order_placed_date),
sum(order_total)
from orders
group by datepart(yyyy, order_placed_date), datepart(mm, order_placed_date), datepart  (dd, order_placed_date)
0 голосов
/ 15 июля 2009

A группа по ваш друг здесь. Может объединяться в сгруппированные строки. Пример запроса будет:

SELECT order_placed_date, SUM(order_total)
  FROM orders
 GROUP BY order_placed_date

Конечно, в вашем примере вы, вероятно, захотите извлечь только часть дня / месяца / года с помощью функции DATE () и сгруппировать по ней. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...